i当前有一个数据框架,其中我想将几行转换为" 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"))
现在,使用"数据",我想将其征用,同时删除行中更具体的值。.我尝试过的是:
:data2<-data.frame(data, na.strings=c("D", "E", "F"))
当然这不起作用,因为我认为Na.Strings仅适用于"读取"软件包..而不是其他功能。是否可以简单地将某些值转换为Na,因此我可以很容易地将某些值转换为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
只需直接分配Na值。
例如:
x <- data.frame(a=1:5, b=letters[1:5])
# > x
# a b
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d
# 5 5 e
# convert the 'b' and 'd' in columb b to NA
x$b[x$b %in% c('b', 'd')] <- NA
# > x
# a b
# 1 1 a
# 2 2 <NA>
# 3 3 c
# 4 4 <NA>
# 5 5 e
data[ data == "D" ] = NA
请注意,如果您试图用" D"替换Na,则反向(df == na] =" d")将无法使用;您需要使用df [is.na(df)]&lt; - " D"
,由于我们没有您的数据,所以我将使用mtcars。假设我们要设置等于4或19.2的MTCAR中的任何位置的值
ind <- which(mtcars == 4, arr.ind = TRUE)
mtcars[ind] <- NA
在您的设置中,您将通过" D"或" E"