R 带向量索引的向量加法
这很可能在其他地方有答案,但我很难制定问题的措辞,以找到我需要的 我有两个数据帧,A和B,A的行数比B多。我想根据A的一列从B中查找一个值,并将其添加到A的另一列。类似于:R 带向量索引的向量加法,r,R,这很可能在其他地方有答案,但我很难制定问题的措辞,以找到我需要的 我有两个数据帧,A和B,A的行数比B多。我想根据A的一列从B中查找一个值,并将其添加到A的另一列。类似于: A$ColumnToAdd + B[ColumnToMatch == A$ColumnToMatch,]$ColumnToAdd 但我发现,在NAs负载下: Warning in `==.default`: longer object length is not a multiple of shorter object l
A$ColumnToAdd + B[ColumnToMatch == A$ColumnToMatch,]$ColumnToAdd
但我发现,在NAs负载下:
Warning in `==.default`: longer object length is not a multiple of shorter object length
我可以用一个凌乱的for循环来完成它,但我正在寻找更快更优雅的东西
谢谢如果我正确理解了您的问题,您正在寻找a或a,正如评论中所建议的那样 下面是一个简单的示例,用于使用符合您所描述内容的虚拟数据
library(tidyverse)
# Some dummy data
ColumnToAdd <- c(1,1,1,1,1,1,1,1)
ColumnToMatch <- c('a','b','b','b','c','a','c','d')
A <- data.frame(ColumnToAdd, ColumnToMatch)
ColumnToAdd <- c(1,2,3,4)
ColumnToMatch <- c('a','b','c','d')
B <- data.frame(ColumnToAdd, ColumnToMatch)
# Example using merge
A %>%
merge(B, by = c("ColumnToMatch")) %>%
mutate(sum = ColumnToAdd.x + ColumnToAdd.y)
# Example using join
A %>%
inner_join(B, by = c("ColumnToMatch")) %>%
mutate(sum = ColumnToAdd.x + ColumnToAdd.y)
库(tidyverse)
#一些虚拟数据
ColumnToAdd如果A
的行数比B
多,那么B$ColumnToMatch==A$ColumnToMatch
应该如何工作?换句话说,请添加一个具有预期结果的可复制示例以澄清问题。您好,这听起来像是我们所说的合并
或加入
-类型的问题。例如,请查看dplyr::internal\u join
的帮助示例。这些应该向您展示如何从两个data.frames中创建一个包含两列和匹配行的DF,然后您可以执行一个简单的sum
。