在 DataFrame 中检测 NA

Detecting NA's in a DataFrame

我在 RStudio 中读取 csv 后,一些列能够检测到空值 (NA),但其他列不能。 View(df)显示一些带有空格的列,而不是 NA。我该怎么做才能将空值表示为 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)
)

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

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

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

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

我们可以用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

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

您可以尝试使用

df[df == ""] = NA

如解释的那样