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

更新於:2021年11月12日

429 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.