根据条件,使用另一个数据框中的值替换数据框中特定的值。

3

I have a dataframe like:

> df <- data.frame(id=c(015,335,625,789), B=c(8,19,8,6), C=c(4,1,4,6), Source=c("Gk", "Ap", "Ap", "Kh"))

> df

  id  B C Source
1 015  8 4     Gk
2 335 19 1     Ap
3 625  8 4     Ap
4 789  6 6     Kh

另一个数据框:
p <- data.frame(id=c(335,625, 789), B2 = c(5,3,4))
p

  id B2
1 335  5
2 625  3
3 789  4

我希望将dfB列中与pB2相同且id一致,同时满足df$Source == "Ap"条件的值替换为B2

最终数据框应为:

  id  B C Source
1 015  8 4     Gk
2 335  5 1     Ap
3 625  3 4     Ap
4 789  6 6     Kh

我知道如何使用零或NA等来替换整个列,但我只想替换符合特定条件的值(而且不需要使用for循环…)。我该如何实现这一点?


df 中,你的 id 与 df 定义中的 id 不同,请编辑此处。 - J_F
1个回答

2
一种方法是,
df[df$Source == "Ap", "B"] <- p[p$id %in% df[df$Source == "Ap", "id"] , "B2"]


#   id B C Source
#1  15 8 4     Gk
#2 335 5 1     Ap
#3 625 3 4     Ap
#4 789 6 6     Kh

1
这正是我正在寻找的。谢谢! - LRD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接