子集数据框中的特定行,但保留观察结果

Subset specific rows in a dataframe, but keeping the observations

我有一个看起来像这样的数据框

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 == 57muni == NA 匹配,但是,如您所见,保留数据框中的所有其他观察值。

如有任何帮助,我们将不胜感激。

我们可以在逻辑条件下使用 subset,即检查 'muni' (is.na(muni)) 和 (&) 中的 NA,其中 'subdel' 是 57 (subdel == 57) 或来自 'muni' (!is.na(muni))

的所有其他非 NA 元素
subset(y, is.na(muni) & subdel == 57 | !is.na(muni))