我想重新编码一个变量,以便,例如,我们可以通过以下方式转换此向量:
> 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”表示转换后四年。有什么建议可以做到最好吗?谢谢!安东尼奥。
答案 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