3 回答
TA贡献1876条经验 获得超7个赞
一个更友好的解决方案dplyr是
require(dplyr)
## fake blank cells
iris[1,1]=""
## define a helper function
empty_as_na <- function(x){
if("factor" %in% class(x)) x <- as.character(x) ## since ifelse wont work with factors
ifelse(as.character(x)!="", x, NA)
}
## transform all columns
iris %>% mutate_each(funs(empty_as_na))
要将更正仅应用于部分列,您可以使用dplyr的列匹配语法指定感兴趣的列。例:mutate_each(funs(empty_as_na), matches("Width"), Species)
如果表格中包含日期,则应考虑使用类型更安全的ifelse
TA贡献1921条经验 获得超9个赞
我最近遇到了类似的问题。这就是对我有用的方法,如果变量是数字,那么简单df$Var[df$Var == ""] <- "NA"就足够了。但是,如果变量是一个因数,则需要先将其转换为字符,然后""用所需的值替换单元格,然后将其转换回因数。因此,例如,您的Sex变量,我认为这是一个因素,如果您要替换空单元格,我将执行以下操作:
df$Var <- as.character(df$Var)
df$Var[df$Var==""] <- "NA"
df$Var <- as.factor(df$Var)
- 3 回答
- 0 关注
- 2503 浏览
添加回答
举报