0
替换值我有一个数据帧,说x
,我愿与NA
更换0
值,列说c("A", "B", "C", "D")
,对行1:10
。有没有一个高效/紧凑的方法来做到这一点?在数据帧的子矩阵R中
替换值我有一个数据帧,说x
,我愿与NA
更换0
值,列说c("A", "B", "C", "D")
,对行1:10
。有没有一个高效/紧凑的方法来做到这一点?在数据帧的子矩阵R中
尝试: 如果你想更换NA对整个数据集:
set.seed(41)
d1 <- as.data.frame(matrix(sample(0:5, 4*10, replace=TRUE), dimnames=list(NULL, LETTERS[1:4]), ncol=4))
d1[!d1] <- NA
d1
如果你在你的数据集的多个列,并希望只能更换为列的子集:
set.seed(41)
d2 <- as.data.frame(matrix(sample(0:5, 8*10, replace=TRUE), dimnames=list(NULL, LETTERS[1:8]), ncol=8))
d2[,LETTERS[1:4]][!d2[,LETTERS[1:4]]] <- NA
d2
# A B C D E F G H
#1 1 4 NA 3 1 5 2 1
#2 5 4 4 3 5 4 5 0
#3 3 4 1 4 5 1 0 4
#4 NA 1 4 5 3 5 1 1
#5 5 NA 5 4 0 0 4 5
#6 5 4 3 4 2 0 4 5
#7 5 5 2 3 2 1 3 4
#8 3 NA 1 1 5 0 2 0
#9 4 5 2 5 3 0 0 1
#10 4 NA 2 5 4 1 1 0
如果是5行4列的子集
d2[1:5, LETTERS[1:4]][!d2[1:5, LETTERS[1:4]]] <- NA
d2
# A B C D E F G H
#1 1 4 NA 3 1 5 2 1
#2 5 4 4 3 5 4 5 0
#3 3 4 1 4 5 1 0 4
#4 NA 1 4 5 3 5 1 1
#5 5 NA 5 4 0 0 4 5
#6 5 4 3 4 2 0 4 5
#7 5 5 2 3 2 1 3 4
#8 3 0 1 1 5 0 2 0
#9 4 5 2 5 3 0 0 1
#10 4 0 2 5 4 1 1 0
您可以检查d对上述两种情况的结果进行判断
谢谢,这很有帮助。 – passerby51 2014-09-13 01:19:52