我有一个看起来像的数据集:
x1=c(0,2,1,3,0)
x2=c(3,2,0,0,1)
x3=c(0,2,1,0,0)
d=cbind(x1,x2,x3)
我想将x1和x2中的0替换为4(不包括x3),以便数据数据如下所示:
> d
x1 x2 x3
[1,] 4 3 0
[2,] 2 2 2
[3,] 1 4 1
[4,] 3 4 0
[5,] 4 1 0
如何在基础包中执行此操作?
答案 0 :(得分:0)
有多种方法可以做到这一点。这是一个:
d[,1:2][d[,1:2]==0] <- 4
第一个方括号告诉R在第一列和第二列上应用操作。第二个括号告诉R条件(第一列或第二列为“0”)。在箭头后面,您将获得要分配给符合条件的条目的新值。
从技术上讲,d[,1:2]==0
部分创建一个布尔矩阵(有两列),其中条目为TRUE
,当d中的相应字段为“0”时。然后将此布尔矩阵应用于d的前两列作为分配4的逻辑索引。