r语言 - 如何同时为数据集创建一个变量,条件是缺失值和另一个数据帧?



我有两个数据帧(想象它们非常大):

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