R,如何替换数据框中的所有emply元素?

Dav*_*.it 3 replace r

我在R工作,我想用NA值替换data.frame的所有空元素.

所以,如果我将此数据框作为输入:

         unit        delta
1         aaa           696
2         bbb           388
3                       388
4         ccc             0
5         ddd          1630
6         eee             4 
Run Code Online (Sandbox Code Playgroud)

那么我想把它作为输出:

         unit         delta
1         aaa           696
2         bbb           388
3        <NA>           388
4         ccc             0
5         ddd          1630
6         eee             4 
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

Ric*_*ven 7

无论是字符列还是因子列,is.na<-替换函数都有一种处理方法.

is.na(df) <- df == ""
Run Code Online (Sandbox Code Playgroud)

应该把工作做得很好.只能在unit列上操作,您可以这样做

is.na(df$unit) <- df$unit == ""
Run Code Online (Sandbox Code Playgroud)

为了进一步检查,我们可以为不同的列分配不同的类,看看会发生什么.

df <- read.csv(text = "unit,delta
bbb,388
,388
ccc,
ddd,1630", colClasses = c("factor", "character"))

df
#   unit delta
# 1  bbb   388
# 2        388
# 3  ccc      
# 4  ddd  1630

is.na(df) <- df == ""
df
#   unit delta
# 1  bbb   388
# 2 <NA>   388
# 3  ccc  <NA>
# 4  ddd  1630

sapply(df, class)
#       unit       delta 
#   "factor" "character" 
Run Code Online (Sandbox Code Playgroud)

  • 可能还值得一提的是,通过使用`read.table`和family的`na.strings`参数,可以在输入阶段对很多这些问题进行排序. (2认同)