如何在 R 数据框中查找没有缺失值的行?

处理缺失值是数据分析中最关键的任务之一。如果我们有大量数据,那么最好删除包含缺失值的行。为了删除这些行,我们可以使用complete.cases函数。

例如,如果我们有一个名为 df 的数据框,其中包含一些缺失值,那么我们可以使用以下给定的命令删除具有缺失值的行 -

df[complete.cases(df),]

示例 1

以下代码段创建了一个示例数据框 -

x1<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
x2<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
x3<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1

创建以下数据框 -

   x1  x2 x3
1  NA  7  3
2   4 NA  3
3   4  7 NA
4   2  4 NA
5   2 NA  4
6   2  7 NA
7  NA  4  4
8  NA NA  4
9   2 NA NA
10 NA NA  4
11  4  7  3
12  4 NA  4
13 NA  7  3
14 NA  7  4
15 NA  7 NA
16  2 NA  4
17  2  4  3
18  4  7  3
19  2 NA  3
20  4  4 NA

要删除具有缺失值的 df1 行,请将以下代码添加到上面的代码段中 -

x1<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
x2<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
x3<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1[complete.cases(df1),]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

   x1 x2 x3
11 4  7  3
17 2  4  3
18 4  7  3

示例 2

以下代码段创建了一个示例数据框 -

y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y3<-sample(c(NA,rnorm(2)),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2

创建以下数据框 -

       y1         y2           y3
1  -0.2619255  -0.80309246  -0.76031065
2  -0.2619255  -0.04079919  -0.76031065
3   1.7217166   NA          -0.76031065
4  -0.2619255   NA           NA
5   NA         -0.04079919  -0.76031065
6   1.7217166   NA           0.01337776
7   NA         -0.80309246   NA
8   NA          NA          -0.76031065
9   1.7217166  -0.04079919   NA
10  NA         -0.04079919   0.01337776
11  1.7217166  -0.80309246   0.01337776
12 -0.2619255   NA          -0.76031065
13  NA         -0.04079919   0.01337776
14 -0.2619255   NA           0.01337776
15 -0.2619255  -0.04079919   NA
16  NA         -0.04079919   NA
17 -0.2619255   NA          -0.76031065
18  1.7217166  -0.80309246   0.01337776
19  NA         -0.80309246  -0.76031065
20  NA         -0.04079919   NA

要删除具有缺失值的 df2 行,请将以下代码添加到上述代码段中 -

y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y3<-sample(c(NA,rnorm(2)),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2[complete.cases(df2),]
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

       y1        y2          y3
1  -0.2619255 -0.80309246 -0.76031065
2  -0.2619255 -0.04079919 -0.76031065
11  1.7217166 -0.80309246  0.01337776
18  1.7217166 -0.80309246  0.01337776