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 關注
- 2565 瀏覽
添加回答
舉報