[英]Replacing words in Dataframe by values in another Dataframe in R
我正在尝试将Dataframe 中的字符串值替换为另一个中的数值。 让我创建一个示例:
df1 <- data.frame("Time" = seq(1, 3, 1),
"Words" = c("dog cat", "bird fish", "elephant shark turtle"))
这是我的主 Dataframe。它非常简单:第一列指的是花费的时间,第二列显示在该特定时间注册的每个单词。 另一个Dataframe是:
df2 <- data.frame("Words" = c("turtle", "bird", "dog", "elephant", "cat", "shark", "fish"),
"Points" = seq(1, 7, 1))
这个Dataframe指的是每个Word完成的Points。 我的目标是计算每个时间段的点数的中位数。 例如,当时间 = 1 时,“狗”等于 3 而“猫”等于 5,因此中位数将为 4 。
我在这方面遇到了很多麻烦。 首先是如何分隔字符串中的单词。 然后,我认为我必须创建一个循环来在 df2 中搜索出现在 df1 中的值并将它们替换为它们的值。 最后,我必须达到每个时间段的中位数才能完成任务。
有任何想法吗?
library(tidyverse)
df1 %>%
mutate(Words = strsplit(df1$Words, " ")) %>%
unnest(Words) %>%
inner_join(df2, by="Words") %>%
group_by(Time) %>%
summarize(Score = median(Points))
library(data.table)
setDT(df1)[,.(Words=strsplit(Words, " ")[[1]]),by=Time] %>%
.[setDT(df2), on=.(Words)] %>%
.[,(Score = median(Points)), by=Time]
Output:
Time Score
<dbl> <dbl>
1 1 4
2 2 4.5
3 3 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.