在DataFrame中检测NA

时间:2018-05-01 06:38:54

标签: r dataframe na

在我读取RStudio中的csv之后,一些列能够检测到Null值(NA),但其他列则没有。 # Create example data frame dat <- data.frame( Date = c("04/12/2011", "03/01/2002", "02/07/2002", "01/02/2001", "", ""), A = "", B = c(NA, 1981, NA, 1981, 1950, 1989) ) 显示一些带有空格的列和&amp;不是NA。我如何解决这个问题,以便将空值表示为NA?

{{1}}

enter image description here

3 个答案:

答案 0 :(得分:3)

在阅读csv本身时,您可以指定用NA替换空白单元格

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

如果空白单元格中有空格,您可以指定:

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

答案 1 :(得分:3)

你的意思是某些行没有显示任何日期吗?

您可以尝试使用

df[df == ""] = NA

解释here

答案 2 :(得分:1)

我们可以使用lapplyreplace将“”替换为NA

# Create example data frame
dat <- data.frame(
  Date = c("04/12/2011", "03/01/2002", "02/07/2002", "01/02/2001", "", ""),
  A = "",
  B = c(NA, 1981, NA, 1981, 1950, 1989)
)

dat
#         Date A    B
# 1 04/12/2011     NA
# 2 03/01/2002   1981
# 3 02/07/2002     NA
# 4 01/02/2001   1981
# 5              1950
# 6              1989

# Replace the "" with NA
dat[] <- lapply(dat, function(x){
  replace(x, x %in% "", NA)
})

dat
#         Date    A    B
# 1 04/12/2011 <NA>   NA
# 2 03/01/2002 <NA> 1981
# 3 02/07/2002 <NA>   NA
# 4 01/02/2001 <NA> 1981
# 5       <NA> <NA> 1950
# 6       <NA> <NA> 1989