我有2个数据框:
> df1
a b c
1 1a 11 21
2 2a 12 22
3 3b 13 23
4 4b 14 24
5 5b 15 25
> df2
a b c
1 1a TRUE TRUE
2 2a FALSE FALSE
3 3b TRUE FALSE
4 4b TRUE TRUE
5 5b FALSE FALSE
我只需保留TRUE
的{{1}}值,并将df1
值替换为FALSE
,如下所示:
NA
我一直在考虑使用> df3
a b c
1 1a 11 21
2 2a NA NA
3 3b 13 NA
4 4b 14 24
5 5b NA NA
循环来检查数据框的每个位置(只有b和c列),但我想知道我是否有基本功能或包使用
PS。我需要在 a 列中始终出现,以免迷路。 谢谢大家。
答案 0 :(得分:1)
如果您知道两个data.frames在同一订单中具有相同的a
值,则可以
if(all(df1$a==df2$a)) {
is.na(df1[,-1]) <-!df2[,-1]
# alternatively
# df1[,-1][!as.matrix(df2[,-1])] <- NA
}
is.na
功能允许重新分配,并将NA值放在右侧为TRUE的位置