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

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

/ 猿问

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

慕标5265247 2019-11-26 12:59:56

我的目标是为所有空白单元格分配“ NA”,而与类别或数值无关。我正在使用na.strings =“”。但这不是将NA分配给所有空白单元格。


## reading the data

dat <- read.csv("data2.csv")

head(dat)

  mon hr        acc   alc sex spd axles door  reg                                 cond1 drug1

1   8 21 No Control  TRUE   F   0     2    2      Physical Impairment (Eyes, Ear, Limb)     A

2   7 20 No Control FALSE   M 900     2    2                                Inattentive     D

3   3  9 No Control FALSE   F 100     2    2 2004                                Normal     D

4   1 15 No Control FALSE   M   0     2    2      Physical Impairment (Eyes, Ear, Limb)     D

5   4 21 No Control FALSE      25    NA   NA                                                D

6   4 20 No Control    NA   F  30     2    4                Drinking Alcohol - Impaired     D

       inj1 PED_STATE st rac1

1     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.strings

dat2 <- read.csv("data2.csv", header=T, na.strings="")

head(dat2)

  mon hr        acc   alc sex spd axles door  reg                                 cond1 drug1

1   8 21 No Control  TRUE   F   0     2    2 <NA> Physical Impairment (Eyes, Ear, Limb)     A

2   7 20 No Control FALSE   M 900     2    2 <NA>                           Inattentive     D

3   3  9 No Control FALSE   F 100     2    2 2004                                Normal     D

4   1 15 No Control FALSE   M   0     2    2 <NA> Physical Impairment (Eyes, Ear, Limb)     D

5   4 21 No Control FALSE      25    NA   NA <NA>                                  <NA>     D

6   4 20 No Control    NA   F  30     2    4 <NA>           Drinking Alcohol - Impaired     D

       inj1 PED_STATE st rac1

1     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


查看完整描述

3 回答

?
冉冉说

我假设您是在谈论第5行的“性别”。可能是这样的情况,在data2.csv文件中,单元格包含一个空格,因此R不认为该单元格为空。


另外,我注意到在第5行的“轴”和“门”列中,从data2.csv读取的原始值为字符串“ NA”。您可能还希望将其视为na.strings。去做这个,


dat2 <- read.csv("data2.csv", header=T, na.strings=c("","NA"))

编辑:


我下载了您的data2.csv。是的,第5行的“性别”列中有空格。所以你要


na.strings=c(""," ","NA")


查看完整回答
反对 2019-11-26
?
幕布斯6054654

一个更友好的解决方案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
?
郎朗坤

我最近遇到了类似的问题。这就是对我有用的方法,如果变量是数字,那么简单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 关注
  • 458 浏览

添加回答

回复

举报

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