我有两个数据帧(想象它们非常大):
df = data.frame(subjects = 1:10,
var1 = c('a',NA,'b',NA,'c',NA,'d','e','f','g'))
g = data.frame(subjects = c(1,3,5,7,8,9,10),
score = c(1,2,1,3,2,4,1) )
我想将 g 数据帧中的变量score
放入 df 数据帧中,条件是如果 var1 = NA,则 df 中的分数将等于 NA。我们如何用一个简单的函数做到这一点?谢谢。
第二种情况:
df = data.frame(subjects = 1:10,
var1 = c('a','e','b','c','c','b','d','e','f','g'))
g = data.frame(subjects = c(1,3,5,7,8,9,10),
score = c(1,2,1,3,2,4,1) )
现在我希望每个未计算为 NA 的科目的分数如下:
df = data.frame(subjects = 1:10,
var1 = c('a','e','b','c','c','b','d','e','f','g'),
score = c(1,NA,2,NA,1,NA,3,2,4,1))
我们可以by
"主题"进行连接,这些"主题"返回"分数"NA
,其中"g"中没有相应的"主题"。 如果我们也需要在NA
"var1"时NA
"分数",请在下一步中replace
对"var1"进行 NA 检查
library(dplyr)
df <- left_join(df, g, by= "subjects") %>%
mutate(score = replace(score, is.na(var1), NA))
-输出
df
subjects var1 score
1 1 a 1
2 2 e NA
3 3 b 2
4 4 c NA
5 5 c 1
6 6 b NA
7 7 d 3
8 8 e 2
9 9 f 4
10 10 g 1