如何对 R 数据帧行进行子集化并在输出中保留带有 NA 的行?
要对R数据帧行进行子集化并在输出中保留带有NA的行,我们可以将子集函数与OR条件一起使用|为na值签名。
例如,如果我们有一个名为df的数据框,其中包含一个列C,该列具有一些NA值,那么我们可以为大于5的值对df进行子集化,并使用以下给定的命令将NA包含在输出中-
subset(df,C>5|is.na(C))
示例1
以下代码段创建了一个示例数据框-
x1<-sample(c(NA,1,2,3),20,replace=TRUE) y1<-sample(c(NA,1,2,3),20,replace=TRUE) df1<-data.frame(x1,y1) df1
创建以下数据框-
x1 y1 1 3 3 2 2 2 3 1 1 4 2 2 5 1 NA 6 2 NA 7 1 3 8 2 3 9 2 2 10 1 3 11 NA 2 12 3 1 13 3 3 14 3 1 15 1 2 16 1 1 17 2 2 18 2 1 19 1 3 20 1 2
为了在没有NA的情况下x1值小于2时对df1进行子集化,请将以下代码添加到上述代码段中-
x1<-sample(c(NA,1,2,3),20,replace=TRUE) y1<-sample(c(NA,1,2,3),20,replace=TRUE) df1<-data.frame(x1,y1) subset(df1,x1<2)输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x1 y1 3 1 1 5 1 NA 7 1 3 10 1 3 15 1 2 16 1 1 19 1 3 20 1 2
此外,如果x1值小于2和NA,要对df1进行子集,请将以下代码添加到上述代码段中-
x1<-sample(c(NA,1,2,3),20,replace=TRUE) y1<-sample(c(NA,1,2,3),20,replace=TRUE) df1<-data.frame(x1,y1) subset(df1,x1<2|is.na(x1))输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x1 y1 3 1 1 5 1 NA 7 1 3 10 1 3 11 NA 2 15 1 2 16 1 1 19 1 3 20 1 2
示例2
以下代码段创建了一个示例数据框-
x2<-sample(c(NA,rpois(2,3)),20,replace=TRUE) y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df2<-data.frame(x2,y2) df2
创建以下数据框-
x2 y2 1 5 NA 2 1 3 3 1 6 4 5 3 5 1 6 6 5 3 7 1 6 8 5 6 9 5 6 10 5 NA 11 NA 6 12 1 3 13 5 NA 14 1 3 15 NA 6 16 1 6 17 5 3 18 NA NA 19 NA 3 20 5 6
为了在y2值小于6且没有NA的情况下对df2进行子集化,请将以下代码添加到上述代码段中-
x2<-sample(c(NA,rpois(2,3)),20,replace=TRUE) y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df2<-data.frame(x2,y2) subset(df2,y2<6)输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x2 y2 2 1 3 4 5 3 6 5 3 12 1 3 14 1 3 17 5 3 19 NA 3
此外,如果y2值小于6则要对df2进行子集使用NA,将以下代码添加到上面的代码片段中-
x2<-sample(c(NA,rpois(2,3)),20,replace=TRUE) y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df2<-data.frame(x2,y2) subset(df2,y2<6|is.na(y2))输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x2 y2 1 5 NA 2 1 3 4 5 3 6 5 3 10 5 NA 12 1 3 13 5 NA 14 1 3 17 5 3 18 NA NA 19 NA 3