如何在R語言中根據列中的空值刪除資料框的行?


有時資料會錯誤地輸入系統,這就是為什麼在進行資料分析之前必須仔細進行資料清洗的原因。如果資料收集者或樣本單元找不到合適的問題選項,則可能會輸入空格作為答案。如果問卷設計不當或錯誤地填寫空格,也會發生這種情況。此外,如果我們有分類變數,則控制類別可能會用空格填充,或者我們可能希望保留一個空格類別以供以後使用新的類別。無論原因是什麼,分析師都會面臨此類問題。這些空格實際上是透過在計算機上使用空格鍵插入的。因此,如果資料框的任何列包含空值,則可以使用單方括號的子集刪除這些行。

示例1

考慮以下資料框

線上演示

> set.seed(24)
> x1<-sample(c(" ",1:5),20,replace=TRUE)
> x2<-rnorm(20,4,1.25)
> df1<-data.frame(x1,x2)
> df1

輸出

  x1   x2
1 2 3.413674
2 1 3.581267
3 2 5.920315
4 4 4.762493
5 1 4.645420
6 5 3.907114
7 1 3.243554
8 1.862944
9 3 3.664134
10 3.189261
11 3.882362
12 4 3.893074
13 4 4.149414
14 3.854630
15 4 2.820216
16 4 3.957828
17 3 3.268216
18 4 4.766064
19 1 5.896403
20 4.821726

刪除包含空值的行

示例

線上演示

> df1[!df1$x1==" ",]

輸出

  x1   x2
1 2 3.413674
2 1 3.581267
3 2 5.920315
4 4 4.762493
5 1 4.645420
6 5 3.907114
7 1 3.243554
9 3 3.664134
12 4 3.893074
13 4 4.149414
15 4 2.820216
16 4 3.957828
17 3 3.268216
18 4 4.766064
19 1 5.896403

示例2

線上演示

> y1<-sample(c(" ",rpois(5,1)),20,replace=TRUE)
> y2<-rpois(20,5)
> df2<-data.frame(y1,y2)
> df2

輸出

 y1 y2
1 1 2
2 0 4
3   3
4 10
5 0 6
6 0 5
7 0 7
8 0 3
9 1 1
10 1 6
11 2 7
12 2 5
13 0 5
14   3
15 0 5
16 0 3
17 1 4
18 0 4
19 2 2
20 14

刪除包含空值的行

示例

> df2[!df2$y1==" ",]

輸出

 y1 y2
1 1 2
2 0 4
5 0 6
6 0 5
7 0 7
8 0 3
9 1 1
10 1 6
11 2 7
12 2 5
13 0 5
15 0 5
16 0 3
17 1 4
18 0 4
19 2 2

更新於:2020年11月23日

4K+瀏覽量

啟動您的職業生涯

完成課程後獲得認證

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