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

我的目标是为所有空白单元格分配“ 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


小唯快跑啊
浏览 2376回答 3
3回答

幕布斯6054654

一个更友好的解决方案dplyr是require(dplyr)## fake blank cellsiris[1,1]=""## define a helper functionempty_as_na <- function(x){&nbsp; &nbsp; if("factor" %in% class(x)) x <- as.character(x) ## since ifelse wont work with factors&nbsp; &nbsp; ifelse(as.character(x)!="", x, NA)}## transform all columnsiris %>% mutate_each(funs(empty_as_na))&nbsp;要将更正仅应用于部分列,您可以使用dplyr的列匹配语法指定感兴趣的列。例:mutate_each(funs(empty_as_na), matches("Width"), Species)如果表格中包含日期,则应考虑使用类型更安全的ifelse

郎朗坤

我最近遇到了类似的问题。这就是对我有用的方法,如果变量是数字,那么简单df$Var[df$Var == ""] <- "NA"就足够了。但是,如果变量是一个因数,则需要先将其转换为字符,然后""用所需的值替换单元格,然后将其转换回因数。因此,例如,您的Sex变量,我认为这是一个因素,如果您要替换空单元格,我将执行以下操作:df$Var <- as.character(df$Var)df$Var[df$Var==""] <- "NA"df$Var <- as.factor(df$Var)
打开App,查看更多内容
随时随地看视频慕课网APP