如何子集R数据框行并在输出中保留包含NA的行?
为了子集R数据框行并在输出中保留包含NA的行,我们可以使用subset函数以及带有|符号的OR条件来处理na值。
例如,如果我们有一个名为df的数据框,其中包含一个名为C的列,该列包含一些NA值,那么我们可以使用以下命令子集df中大于5的值并将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的情况下子集df1中x1值小于2的行,请将以下代码添加到上述代码片段中:
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
此外,为了在包含NA的情况下子集df1中x1值小于2的行,请将以下代码添加到上述代码片段中:
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
为了在不包含NA的情况下子集df2中y2值小于6的行,请将以下代码添加到上述代码片段中:
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
此外,为了在包含NA的情况下子集df2中y2值小于6的行,请将以下代码添加到上述代码片段中:
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
广告