如何通过指定包含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