如何用NA替换空字符串?

Mam*_*mba 1 r

我想将空格(没有值)更改为missing(NA).我假设当R读取数据(在我的情况下是csv)时会自动发生这种情况,但是只有空白所以我试过了:

is.na(data) <- data==""
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

data <- read.table("data.csv", header=TRUE, sep=";", na.strings="")
data[data==""] <- NA
Run Code Online (Sandbox Code Playgroud)

但空白仍然存在.我怎么解决这个问题?

And*_*rie 8

试试这个:

x <- c("a", "", "b", "", "1")
x
x[x==""] <- NA
x
Run Code Online (Sandbox Code Playgroud)

结果:

[1] "a" NA  "b" NA  "1"
Run Code Online (Sandbox Code Playgroud)


akr*_*run 6

为了证明代码有效:

data <- data.frame( col1= c("", letters[1:4]), col2=c(letters[1:4], ""))
 is.na(data) <- data==''
 data
 #  col1 col2
 #1 <NA>    a
 #2   a    b
 #3    b    c
 #4    c    d
 #5    d <NA>
Run Code Online (Sandbox Code Playgroud)

假设,如果你有''空格' ',这将不起作用

 data <- data.frame( col1= c("", letters[1:4]), col2=c(letters[1:4], " "))
 data1 <- data
 is.na(data) <- data==''
  data
  col1 col2
 #1 <NA>    a
 #2    a    b
 #3    b    c
 #4    c    d
 #5    d     
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以使用 str_trim

  library(stringr)
  data1[] <- lapply(data1, str_trim)
  is.na(data1) <- data1==''
  data1
  #  col1 col2
  #1 <NA>    a
  #2    a    b
  #3    b    c
  #4    c    d
  #5    d <NA>
Run Code Online (Sandbox Code Playgroud)


Dav*_*urg 5

na.strings = ""在读取数据时使用,例如

test1 <- data.frame(A = 1:6, B = c("6","7", "",3, "","7")) # Assuming this is your data
test1
#   A B
# 1 1 6
# 2 2 7
# 3 3  
# 4 4 3
# 5 5  
# 6 6 7

tf <- tempfile() # Creating some temp file for illustration
write.csv(test1, tf, row.names = F) # Saving the dummy data on the hard disk
read.csv(tf, na.strings = "") # Reading it back while specifying na.strings = ""
#   A  B
# 1 1  6
# 2 2  7
# 3 3 NA
# 4 4  3
# 5 5 NA
# 6 6  7
Run Code Online (Sandbox Code Playgroud)