如何通过指定包含NA的列对R数据框进行子集化?

r programmingserver side programmingprogramming更新于 2025/6/24 15:22:17

要通过指定包含NA的列对R数据框进行子集化,我们可以按照以下步骤操作 −

  • 首先,创建一个包含NA列的数据框。

  • 然后,使用 is.na 和 subset 函数,通过指定包含NA的列对数据框进行子集化。

示例

创建数据框

让我们创建一个如下所示的数据框 −

x<-sample(c(NA,1,2,3),25,replace=TRUE)
y<-sample(c(NA,10,12,20),25,replace=TRUE)
z<-sample(c(NA,100,120,180),25,replace=TRUE)
a<-sample(c(NA,80,77,62),25,replace=TRUE)
df<-data.frame(x,y,z,a)
df

输出

执行时,上述脚本将生成以下输出(由于随机化,此输出将因您的系统而异) −

   x  y    z   a
1  1  NA  100  62
2  2  NA   NA  62
3  3  20  120  77
4  NA 20  180  62
5  1  NA   NA  NA
6  2  20   NA  62
7  3  10  180  62
8  2  10  120  62
9  1  12   NA  77
10 3  NA  100  62
11 1  10   NA  77
12 NA 12  180  77
13 NA NA  180  77
14 2  NA  180  62
15 3  10   NA  80
16 3  NA  100  80
17 1  20  120  80
18 1  10  120  80
19 1  12  100  NA
20 1  12  100  NA
21 1  10  180  77
22 1  12   NA  80
23 1  NA   NA  80
24 NA 10  100  NA
25 3  20   NA  62

通过指定包含 NA 的列对数据框进行子集化

使用 is.na 和 subset 函数,通过指定包含 NA 的列 x 和 z 对数据框 df 进行子集化,如下所示 −

x<-sample(c(NA,1,2,3),25,replace=TRUE)
y<-sample(c(NA,10,12,20),25,replace=TRUE)
z<-sample(c(NA,100,120,180),25,replace=TRUE)
a<-sample(c(NA,80,77,62),25,replace=TRUE)
df<-data.frame(x,y,z,a)
subset(df,is.na(x)|is.na(z))

输出

   x  y  z   a
2  2  NA  NA  62
4  NA 20 180  62
5  1  NA  NA  NA
6  2  20  NA  62
9  1  12  NA  77
11 1  10  NA  77
12 NA 12 180  77
13 NA NA 180  77
15 3  10  NA  80
22 1  12  NA  80
23 1  NA  NA  80
24 NA 10 100  NA
25 3  20  NA  62

相关文章