在 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")
我们可以用lapply
和replace
将“”替换为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
如解释的那样
我在 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")
我们可以用lapply
和replace
将“”替换为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
如解释的那样