为了账号安全,请及时绑定邮箱和手机立即绑定

将空白单元格更改为“ NA”

将空白单元格更改为“ NA”

小唯快跑啊 2019-11-26 12:59:56
我的目标是为所有空白单元格分配“ NA”,而与类别或数值无关。我正在使用na.strings =“”。但这不是将NA分配给所有空白单元格。## reading the datadat <- read.csv("data2.csv")head(dat)  mon hr        acc   alc sex spd axles door  reg                                 cond1 drug11   8 21 No Control  TRUE   F   0     2    2      Physical Impairment (Eyes, Ear, Limb)     A2   7 20 No Control FALSE   M 900     2    2                                Inattentive     D3   3  9 No Control FALSE   F 100     2    2 2004                                Normal     D4   1 15 No Control FALSE   M   0     2    2      Physical Impairment (Eyes, Ear, Limb)     D5   4 21 No Control FALSE      25    NA   NA                                                D6   4 20 No Control    NA   F  30     2    4                Drinking Alcohol - Impaired     D       inj1 PED_STATE st rac11     Fatal      <NA>  F <NA>2  Moderate      <NA>  F <NA>3  Moderate      <NA>  M <NA>4 Complaint      <NA>  M <NA>5 Complaint      <NA>  F <NA>6  Moderate      <NA>  M <NA>## using na.stringsdat2 <- read.csv("data2.csv", header=T, na.strings="")head(dat2)  mon hr        acc   alc sex spd axles door  reg                                 cond1 drug11   8 21 No Control  TRUE   F   0     2    2 <NA> Physical Impairment (Eyes, Ear, Limb)     A2   7 20 No Control FALSE   M 900     2    2 <NA>                           Inattentive     D3   3  9 No Control FALSE   F 100     2    2 2004                                Normal     D4   1 15 No Control FALSE   M   0     2    2 <NA> Physical Impairment (Eyes, Ear, Limb)     D5   4 21 No Control FALSE      25    NA   NA <NA>                                  <NA>     D6   4 20 No Control    NA   F  30     2    4 <NA>           Drinking Alcohol - Impaired     D       inj1 PED_STATE st rac11     Fatal        NA  F   NA2  Moderate        NA  F   NA3  Moderate        NA  M   NA4 Complaint        NA  M   NA5 Complaint        NA  F   NA6  Moderate        NA  M   NA
查看完整描述

3 回答

?
幕布斯6054654

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


查看完整回答
反对 回复 2019-11-26
?
郎朗坤

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)


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 2373 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信