假设我有一个数据框
Grp1 Grp2 Grp3
Trt1 NA 1 NA
Trt2 2 3 NA
Trt3 4 NA 5
Run Code Online (Sandbox Code Playgroud)
我想对此进行过滤,以仅包括非NA值的数量大于某个总数的行(在本例中为2)。因此,对于此示例,我想要一个结果:
Grp1 Grp2 Grp3
Trt2 2 3 NA
Trt3 4 NA 5
Run Code Online (Sandbox Code Playgroud)
您可以使用rowSums()和is.na()过滤数据框。这将强制您用于过滤到矩阵中的值(因此,对于非常大的数据帧可能会有问题),但是应该可以解决问题。
df1[rowSums(!is.na(df1)) >= 2, ]
Grp1 Grp2 Grp3
Trt2 2 3 NA
Trt3 4 NA 5
Run Code Online (Sandbox Code Playgroud)
资料:
df1 <- read.table(header = T, text = " Grp1 Grp2 Grp3
Trt1 NA 1 NA
Trt2 2 3 NA
Trt3 4 NA 5")
Run Code Online (Sandbox Code Playgroud)