【发布时间】:2021-01-08 18:27:41
【问题描述】:
我有一个看起来像这样的数据框
y = data.frame(subdel = c(1, 2, 3, 1, 57, 14, 1, 2, 57, 57, 57, 3, 1, 1,
31, 21, 34, 56, 12, 45, 1, 63, 31, 34), muni = c("A01", "A83", "A40", NA, NA, NA, NA, NA, NA, NA, NA, "A45", "B26", "B42","B61", "B70", "B90", "C53", "C89","A45", "B26", "B42","B61", "B70"))
我期待下一个结果:
z = data.frame(subdel = c(1, 2, 3, 57, 57, 57, 57, 3, 1, 1, 31, 21, 34, 56, 12, 45, 1, 63, 31, 34), muni = c("A01", "A83", "A40", NA, NA, NA, NA, "A45", "B26", "B42","B61", "B70", "B90", "C53", "C89", "A45", "B26", "B42","B61", "B70"))
我想将subdel == 57 与muni == NA 匹配,但是,如您所见,保留数据框中的所有其他观察结果。
任何帮助将不胜感激。
【问题讨论】:
-
x == NA永远不会给你你想要的。1==NA、NA==NA、"A"==NA都是NA,不分真假。检查它的规范方法是is.na(muni)。 -
您可以创建一个键来匹配它们,然后合并向量。使用 data.table 它会是这样的:'setDT(subdel)[subdel==57, id:=1]' and 'setDT(muni)[is.na(muni), id:=1]' and 'merge (subdel, muni, all.x=T, all.y=T, by=c("id"))'