重新编码变量R.

时间:2015-03-13 20:27:46

标签: r

我有一个看起来像的数据集:

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

如何在基础包中执行此操作?

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。这是一个:

d[,1:2][d[,1:2]==0] <- 4

第一个方括号告诉R在第一列和第二列上应用操作。第二个括号告诉R条件(第一列或第二列为“0”)。在箭头后面,您将获得要分配给符合条件的条目的新值。

从技术上讲,d[,1:2]==0部分创建一个布尔矩阵(有两列),其中条目为TRUE,当d中的相应字段为“0”时。然后将此布尔矩阵应用于d的前两列作为分配4的逻辑索引。