R中的na.omit和complete.cases有什么区别?

na.omit函数将删除数据框中的所有缺失值,如果将complete.cases应用于整个数据框,它们也会执行相同的操作。两者之间的主要区别是complete.cases可以应用于某些列或行。查看以下示例以了解不同之处。

示例

请看以下数据帧:

> set.seed(2584)
> x<-sample(c(NA,2,8,6,5,4),20,replace=TRUE)
> y<-sample(c(NA,5,25),20,replace=TRUE)
> df<-data.frame(x,y)
> df

输出结果

   x y
1 NA 25
2 5 5
3 8 NA
4 6 5
5 4 NA
6 4 5
7 6 NA
8 4 NA
9 4 5
10 8 5
11 8 5
12 6 25
13 5 25
14 6 5
15 5 5
16 4 5
17 NA 25
18 8 NA
19 4 NA
20 8 5

将na.omit应用于df:

示例

> na.omit(df)

输出结果

  x y
2 5 5
4 6 5
6 4 5
9 4 5
10 8 5
11 8 5
12 6 25
13 5 25
14 6 5
15 5 5
16 4 5
20 8 5

将complete.cases应用于df:

示例

> df[complete.cases(df),]

输出结果

  x y
2 5 5
4 6 5
6 4 5
9 4 5
10 8 5
11 8 5
12 6 25
13 5 25
14 6 5
15 5 5
16 4 5
20 8 5

将complete.cases应用于df仅删除第1列中的缺失值:

示例

> df[complete.cases(df[,1]),]

输出结果

  x y
2 5 5
3 8 NA
4 6 5
5 4 NA
6 4 5
7 6 NA
8 4 NA
9 4 5
10 8 5
11 8 5
12 6 25
13 5 25
14 6 5
15 5 5
16 4 5
18 8 NA
19 4 NA
20 8 5

将complete.cases应用于df仅删除第2列中的缺失值:

示例

> df[complete.cases(df[,2]),]

输出结果

   x y
1 NA 25
2 5 5
4 6 5
6 4 5
9 4 5
10 8 5
11 8 5
12 6 25
13 5 25
14 6 5
15 5 5
16 4 5
17 NA 25
20 8 5