假设我有一个数据框
Grp1 Grp2 Grp3
Trt1 NA 1 NA
Trt2 2 3 NA
Trt3 4 NA 5
我想将其过滤为仅包含非 NA 值的数量大于某个总数(在本例中为 2)的行。所以对于这个例子,我想要一个结果:
Grp1 Grp2 Grp3
Trt2 2 3 NA
Trt3 4 NA 5
最佳答案
您可以使用 rowSums()
和 is.na()
来过滤数据帧。这会将您用于过滤的值强制转换为矩阵(因此对于非常大的数据帧可能会出现问题),但它应该可以解决问题。
df1[rowSums(!is.na(df1)) >= 2, ]
Grp1 Grp2 Grp3
Trt2 2 3 NA
Trt3 4 NA 5
数据:
df1 <- read.table(header = T, text = " Grp1 Grp2 Grp3
Trt1 NA 1 NA
Trt2 2 3 NA
Trt3 4 NA 5")
关于r - 在 R 中,如何过滤数据框以仅包含具有 >=2 个非 NA 值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59055957/