【发布时间】:2019-08-02 12:59:25
【问题描述】:
如果这看起来像一个重复的问题,请原谅。我进行了长时间的搜索,但无法归零。
我有一个数据集,其中有一列是文本,另一列是文本的第一个单词。
还有两列用于显示文本发送的人数和阅读人数。
样本数据:
df <- data.frame(Word = c("Happy", "Good", "Have", "Do"),
Text = c("Happy Birthday", "Good Morning", "Have a good day",
"Do you have happy news"),
Sent = c(10, 20, 15, 20),
Read = c(8, 12, 9, 13), stringsAsFactors = FALSE)
我想计算每个单词的阅读率。它是从包含该单词的文本中计算出来的
我尝试了以下代码,但似乎永远运行,但没有任何错误消息。
我知道在我的情况下 for 循环对于 18K 记录效率不高,并且在 R 中更喜欢一种有效的解决方案。
感谢您在这方面的任何帮助。
for (i in 1:nrow(messages)){
word <- messages$Word[i]
messages$Rate[i] <- messages%>% filter(str_detect(string = Text, pattern = word)) %>% summarise(sum(Read)/sum(Sent))
}
【问题讨论】:
-
请编辑您的问题并通过粘贴
dput(messages)的输出或您的数据子集来提供可重现的示例。 -
添加了创建示例数据的代码。复制自 Ronak 下面的回答。感谢他。