我在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)
我怎么能这样做?
无论是字符列还是因子列,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)