重新编码变量

时间:2011-12-06 21:59:08

标签: r data-manipulation

我想重新编码一个变量,以便,例如,我们可以通过以下方式转换此向量:

> a <- c(0,0,0,0,0,1,1,1,1,1) # original 
> b <- c(-5,-4,-3,-2,-1,0,1,2,3,4) # transformed
> cbind(a,b)
  a  b
 [1,] 0 -5
 [2,] 0 -4
 [3,] 0 -3
 [4,] 0 -2
 [5,] 0 -1
 [6,] 1  0
 [7,] 1  1
 [8,] 1  2
 [9,] 1  3
[10,] 1  4
>

这些变量遵循一个顺序,恰好是一个时间顺序。在原始数据集中,我有一个编码为“0”或“1”的变量,例如这里的例子中的“a”。它是每年的分类指标。在某些时候,存在从“0”到“1”的转变,就像在这些示例中的行号6中一样。然后我想重新编码原始变量,创建一个新变量,它实际上告诉我从“0”变为“1”之前和之后多少年。因此,“ - 5”表示转换前五年,“0”表示转换年份,例如,“4”表示转换后四年。有什么建议可以做到最好吗?谢谢!安东尼奥。

1 个答案:

答案 0 :(得分:5)

> M <- matrix( c(0,0,0,0,0,1,1,1,1,1) , ncol=1)
> M <- cbind(M, seq_along(M) - min(which(M > 0)))
> M
      [,1] [,2]
 [1,]    0   -5
 [2,]    0   -4
 [3,]    0   -3
 [4,]    0   -2
 [5,]    0   -1
 [6,]    1    0
 [7,]    1    1
 [8,]    1    2
 [9,]    1    3
[10,]    1    4