合并数据框,保留数据集 A 中的所有行

哈哈

我正在尝试根据数据集 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章