我正在尝试根据数据集 A 中的值合并两个数据集(A 和 B)。理想情况下,生成的数据集应包含数据集 A 中的所有元素,并且仅包含数据集 B 中的匹配结果。数据集 A 包含重复项(即同一个字)。使用 left_join 或 merge,重复项不会从数据集 B(只是 NA)中获得相应的值。为了规避这个问题,我使用了下面的代码:
word <- c('cat', 'house', 'cat', 'dog')
words <- as.data.frame(word)
freq <- runif(5)
sub <- as.data.frame(freq)
sub$word <- c('house', 'bottle', 'cat', 'chair', 'dog')
for(i in 1:length(words$word)){
if (words$word[i] %in% sub$word) {
words$freq[i] <- sub$freq[sub$word == words$word[i]]
}
}
然而,如果我这样做,我会收到一长串警告消息(“要替换的项目数不是替换长度的倍数”),尽管输出对我来说看起来完全没问题。
谁能帮我弄清楚问题是什么?
谢谢!
你可以使用merge
:
word <- c('cat', 'house', 'cat', 'dog')
words <- data.frame(word)
set.seed(42)
freq <- runif(5)
sub <- data.frame(freq)
sub$word <- c('house', 'bottle', 'cat', 'chair', 'dog')
merge(words, sub, by = "word", all.x = TRUE)
#> word freq
#> 1 cat 0.2861395
#> 2 cat 0.2861395
#> 3 dog 0.6417455
#> 4 house 0.9148060
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句