我想將空格(無值)更改爲缺少(NA
)。我以爲這當R讀取數據(在我的情況CSV)自動發生的,但也有隻是空白,所以我嘗試:如何用NA代替空白字符串?
is.na(data) <- data==""
我也試過:
data <- read.table("data.csv", header=TRUE, sep=";", na.strings="")
data[data==""] <- NA
但仍然空白。我該如何解決這個問題?
我想將空格(無值)更改爲缺少(NA
)。我以爲這當R讀取數據(在我的情況CSV)自動發生的,但也有隻是空白,所以我嘗試:如何用NA代替空白字符串?
is.na(data) <- data==""
我也試過:
data <- read.table("data.csv", header=TRUE, sep=";", na.strings="")
data[data==""] <- NA
但仍然空白。我該如何解決這個問題?
要說明的是代碼的工作:
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>
這是非常有益的thx – Mamba 2014-08-31 18:49:51
讀取數據時只需使用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'的例子,很難知道問題。 – akrun 2014-08-31 18:21:07
對於'data <-c(「ok」,「」,「good」)''然後運行'is.na(data)< - data ==「」''好像工作得很好。你確定這是個問題嗎?也許你的「空白」是空格? – MrFlick 2014-08-31 18:22:05
@HiThere你可以在'read.csv'中使用'na.strings ='''' – akrun 2014-08-31 18:26:23