我有两个这样的数据框:
df1 <- data.frame(v1 = c("l", "b", "c", "i", "e", "h", "g"),
v2 = c("a", "c", "b", "f", "g", "n", "m"),
v3 = c("m", "h", "f", "c", "d", "j", "k"))
df2 <- data.frame(v1 = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"),
v2 = c(1,6,5,4,2,9,7,3,2,1,4,5,6,9))
我想要的是将df2的字母的匹配数字与df1相关联,然后将这些值的总和添加到新的列中。这些值不会在同一行中重复,但可以在不同的行和不同的列中找到。(例如值“c”)
我发现了一种使用ifelse
的方法,如下所示:
for (i in 1:nrow(df1)){
ifelse([i,] == "a", df1$total[i] <- df1$Total[i] + df2[1,2], df1$Total[i])
}
但是这样,我需要为每个值编写不同的ifelse
语句。
我想要的结果应该是这样的:
v1 v2 v3 Total
l a c 11
b c h 14
c b f 20
i f c 16
e g d 13
h n j 15
g m k 17
3条答案
按热度按时间uyto3xhc1#
下面是一个使用
dplyr
的选项:zbdgwd5y2#
对于基数R,我们可以使用
apply
来匹配所有单元格的值,然后使用rowSums
来匹配这些值。zsohkypk3#
有两种方法可以解决您的问题: