如何用NA或任何其他值替换R中记录为空格的缺失值?

有时,当我们读取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和其他数字的完整数据框。