在R中,如何过滤数据帧以仅包括具有> = 2个非NA值的行?

Nic*_*cue 3 r filter

假设我有一个数据框

      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)

And*_*rew 5

您可以使用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)