我想将空格(无值)更改为缺失(NA
)。我假设当R读取数据(在我的情况下是csv)时会自动发生这种情况,但是只有空白所以我试过了:
is.na(data) <- data==""
我也尝试过:
data <- read.table("data.csv", header=TRUE, sep=";", na.strings="")
data[data==""] <- NA
但是空白仍然存在。我该如何解决这个问题?
答案 0 :(得分:8)
试试这个:
x <- c("a", "", "b", "", "1")
x
x[x==""] <- NA
x
结果:
[1] "a" NA "b" NA "1"
答案 1 :(得分:4)
显示代码有效:
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>
假设,如果您有''
以及空格' '
,那么这不会起作用
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
在这种情况下,您可以使用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>
答案 2 :(得分:3)
在阅读数据时只需使用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