如何在 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
广告