应用于数据帧的na.strings

应用于数据帧的na.strings,r,R,我目前有一个数据帧,其中有几行我想转换为“NA”。当我第一次从.csv导入这个数据帧时,我可以使用na.strings=c(“a”、“B”、“c”)等等来删除我不想要的值 我想再次做同样的事情,但这次已经使用了一个数据帧,而不是导入另一个.csv 要导入数据,我使用了: data<-read.csv("code.csv", header=T, strip.white=TRUE, stringsAsFactors=FALSE, na.strings=c("", "A", "B", "C"))

我目前有一个数据帧,其中有几行我想转换为“NA”。当我第一次从.csv导入这个数据帧时,我可以使用na.strings=c(“a”、“B”、“c”)等等来删除我不想要的值

我想再次做同样的事情,但这次已经使用了一个数据帧,而不是导入另一个.csv

要导入数据,我使用了:

data<-read.csv("code.csv", header=T, strip.white=TRUE, stringsAsFactors=FALSE, na.strings=c("", "A", "B", "C"))

data直接分配NA值即可

e、 g:

x
#a b
#11A
#2 b
#3 c
#4d
#5 e
#将列b中的“b”和“d”转换为NA
x$b[x$b%在%c('b','d')]x
#a b
#11A
# 2 2 
#3 c
# 4 4 
#5 e

由于我们没有您的数据,我将使用mtcars。假设我们要在mtcars中的任意位置设置等于4或19.2到NA的值

ind <- which(mtcars == 4, arr.ind = TRUE)
mtcars[ind] <- NA
ind

请注意,如果您试图用“D”替换NA,则反向(df[df==NA]=“D”)将不起作用;您需要使用df[is.NA(df)]以下是替换多列中的值的方法:

# an example data frame
dat <- data.frame(x = c("D", "E", "F", "G"), 
                  y = c("A", "B", "C", "D"), 
                  z = c("X", "Y", "Z", "A"))
#   x y z
# 1 D A X
# 2 E B Y
# 3 F C Z
# 4 G D A

# values to replace
na.strings <- c("D", "E", "F")

# index matrix 
idx <- Reduce("|", lapply(na.strings, "==", dat))

# replace values with NA
is.na(dat) <- idx

dat
#     x    y z
# 1 <NA>    A X
# 2 <NA>    B Y
# 3 <NA>    C Z
# 4    G <NA> A
#示例数据帧

谢谢斯文。你是对的。我编辑了我的答案。你的答案更好:)谢谢所有的答案。很多都很有用
ind <- which(mtcars == 4, arr.ind = TRUE)
mtcars[ind] <- NA
data[ data == "D" ] = NA
# an example data frame
dat <- data.frame(x = c("D", "E", "F", "G"), 
                  y = c("A", "B", "C", "D"), 
                  z = c("X", "Y", "Z", "A"))
#   x y z
# 1 D A X
# 2 E B Y
# 3 F C Z
# 4 G D A

# values to replace
na.strings <- c("D", "E", "F")

# index matrix 
idx <- Reduce("|", lapply(na.strings, "==", dat))

# replace values with NA
is.na(dat) <- idx

dat
#     x    y z
# 1 <NA>    A X
# 2 <NA>    B Y
# 3 <NA>    C Z
# 4    G <NA> A