我有一个csv文件,如下所示:
A, B, C,
1, 2 1, 3,
3, 1, 0,
4, 1, 0 5,
...
是否可以设置na.string以将所有带空格的字段分配给NA(例如regex
function(x){x[grep(patt="\\ ", x)]<-NA;x
}),即
A, B, C,
1, NA, 3,
3, 1, 0,
4, 1, NA,
答案 0 :(得分:2)
我们可以通过转换为NA
来循环列并将其设置为numeric
df1[] <- lapply(df1, as.numeric)
注意:在这里,我假设列是character
类。如果是factor
,请执行lapply(df1, function(x) as.numeric(as.character(x)))
答案 1 :(得分:2)
@ akrun答案的变化(我喜欢)。
character
这会在假设所有列都为numeric
的情况下读取文件,然后将所有列从mutate_each
转换为dplyr
{/ 1}}。
在阅读中使用colClasses="numeric"
不起作用(我不知道原因:(),因为
> as.numeric("2 1")
[1] NA
从How to read data when some numbers contain commas as thousand separator?我们了解到我们可以创建一个新功能来进行转换。
setAs("character", "numwithspace", function(from) as.numeric(from) )
read.csv("test.csv", colClasses="numwithspace")
给出了
A B C
1 1 NA 3
2 3 1 0
3 4 1 NA
答案 2 :(得分:1)