我希望将空白(无值)更改为缺失值(NA
)。我认为当R读取数据(在我的情况下是csv)时,这会自动发生,但实际上只有空白,所以我尝试了以下方法:
is.na(data) <- data==""
我也尝试了以下方法:
data <- read.table("data.csv", header=TRUE, sep=";", na.strings="")
data[data==""] <- NA
但是仍然有空白。我该如何解决这个问题?
我希望将空白(无值)更改为缺失值(NA
)。我认为当R读取数据(在我的情况下是csv)时,这会自动发生,但实际上只有空白,所以我尝试了以下方法:
is.na(data) <- data==""
data <- read.table("data.csv", header=TRUE, sep=";", na.strings="")
data[data==""] <- NA
试试这个:
x <- c("a", "", "b", "", "1")
x
x[x==""] <- NA
x
[1] "a" NA "b" NA "1"
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>
例如,在读取数据时只需使用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
dput
的示例,很难知道问题所在。 - akrundata<-c("ok","","good")
这个输入数据,运行is.na(data) <- data==""
能够正常工作。你确定这是个问题吗?或许你的“空值”实际上是空格? - MrFlickread.csv
中使用na.strings=''
。 - akrun''
部分,您可以使用dput(head(data, 10))
。 - akrundput(head(data, 100))
- David Arenburg