数据帧中值的条件行范围替换

时间:2014-11-21 15:25:36

标签: r dataframe

我有一个大型数据框,其中所有列都包含数字数据。如何评估每一行,如果行中的所有值等于零(即,当rowsum = 0时),请将这些零替换为NA。

(如果一行中只有一些值为零,我不想替换它们)

1 个答案:

答案 0 :(得分:0)

尝试

d1[!rowSums(d1),]  <- NA
d1
#   V1 V2 V3 V4 V5
#1   1  3  0  1  2
#2   1  2  3  1  2
#3   4  4  4  2  1
#4   3  4  0  0  1
#5  NA NA NA NA NA
#6   5  5  4  1  0
#7   1  1  0  4  2
#8  NA NA NA NA NA
#9   4  3  3  4  1
#10  1  0  0  5  2

或者

d1[!Reduce(`|`, d1),] <- NA

数据

d1 <- structure(list(V1 = c(1, 1, 4, 3, 0, 5, 1, 0, 4, 1), V2 = c(3, 
2, 4, 4, 0, 5, 1, 0, 3, 0), V3 = c(0, 3, 4, 0, 0, 4, 0, 0, 3, 
0), V4 = c(1, 1, 2, 0, 0, 1, 4, 0, 4, 5), V5 = c(2, 2, 1, 1, 
0, 0, 2, 0, 1, 2)), .Names = c("V1", "V2", "V3", "V4", "V5"), row.names = c(NA, 
-10L), class = "data.frame")