如何在 R 中用 NA 或其他值替換用空格記錄的缺失值?


有時,當我們在 R 中讀取資料時,缺失值會被記錄為空格,很難將它們替換為任何值。其原因是我們需要知道在缺失值位置使用了多少空格。如果我們知道這一點,那麼賦值就很容易了。

示例

考慮一下向量 x 和 y 的以下資料框。

> x<-c("", 3,2,1,2,3,2,1," ", 43, "")
> y<-c(1,2,"", 43,2," ", 3,2,3,"", 7)
> df<-data.frame(x,y)
> df
  x  y
1    1
2 3  2
3 2
4 1 43
5 2  2
6    3
7 2  3
8 1  2
9    3
10  43
11   7

這裡,我們有記錄為空格的缺失值,以及僅僅用雙引號表示的缺失值。現在讓我們將這些缺失值替換為 NA,如下所示:

> df[df==""]<-NA
> df
    x   y
1 <NA>  1
2   3   2
3   2 <NA>
4   1  43
5   2   2
6       3
7   2   3
8   1   2
9       3
10 43 <NA>
11 <NA> 7

這裡,x 中的第九個值和 y 中的第六個值沒有被替換,因為空格的數量不同,所以我們需要指定它們。首先,透過查看向量來讀取空格的數量,如下所示:

> x
[1] "" "3" "2" "1" "2" "3" "2" "1" " " "43" ""
> y
[1] "1"  "2"    ""    "43" "2"    " "    "3"    "2"
[9] "3"   ""    "7"

x 的第九個值似乎有一個空格,y 的第六個值似乎有五個空格。現在讓我們更改 x 的 df,如下所示:

> df[df==" "]<-NA
> df
     x  y
1  <NA> 1
2   3   2
3   2 <NA>
4   1  43
5   2   2
6       3
7   2   3
8   1   2
9  <NA> 3
10 43 <NA>
11 <NA> 7

現在我們將顯示 y 的 df,如下所示:

> df[df==" "]<-NA
> df
     x  y
1  <NA> 1
2   3   2
3   2 <NA>
4   1  43
5   2   2
6   3 <NA>
7   2   3
8   1   2
9 <NA>  3
10 43 <NA>
11 <NA> 7

現在,我們有了包含 NA 和其他數字的完整資料框。

更新於:2020年8月10日

1K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

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