从csv加载后,我的数据集中有空白/空值。
我发现我可以这样做:
data$col[data$col==""] <- "NA"
data$col <- as.factor(data$col)
将它们更改为NA,但我有近200列,所以它不是最好的方法。 我尝试了一个带有所有类型索引的for循环,但它并没有真正起作用。我错过了什么?除非用NA&#39>多次覆盖我的数据
for (i in 1:189) {
if (class(data[[i]]) == "character") {
data[data[[i]] == "", ] <- "NA"
}
答案 0 :(得分:0)
如果您想将数据框中的所有空字符串(""
)转换为NA
而不进行循环,请执行以下操作:
df[df==""] = NA
例如:
df = data.frame(id = 1:4,
name = c("John","Jill","","Jane"),
surname = c("Smith","","Peters",""))
> df
id name surname
1 1 John Smith
2 2 Jill
3 3 Peters
4 4 Jane
df[df==""] = NA
> df
id name surname
1 1 John Smith
2 2 Jill <NA>
3 3 <NA> Peters
4 4 Jane <NA>
答案 1 :(得分:0)
试试这个: 我生成了一个例子:
test.df <- data.frame(x1=c(NA,2,3,NA),x2=c(1,2,3,4),x3=c(1,"" ,"" ,4))
test.df[test.df==""] <- NA
答案 2 :(得分:0)
您可以使用属性na.strings:
读取数据read.csv("data2.csv", header=T, na.strings=c("","NA"))
Already a stackoverflow article about this
或使用你的逻辑:
for (i in seq(1,length(colnames(data)))){
data[,i] <- as.character(data[,i])
data[,i][data[,i] == ""]<-NA
}