如何子集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

更新于:2021年11月12日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告