如何通过行索引

时间:2016-10-17 05:22:15

标签: r dataframe

我有一个这样的数据框:

    a   b   c
1   1   2   3
2   1   2   3
3   1   2   3

并希望对其进行转换,使每行根据其行索引向右移动。所以结果如下:

    a   b   c
1   1   2   3
2   0   1   2
3   0   0   1

我如何在R?

中实现这一目标

1 个答案:

答案 0 :(得分:1)

从以下数据框开始概括一点

a b c
1 1 2 3
2 1 2 3
3 1 2 3
4 1 2 3
5 1 2 3

t(sapply(1:nrow(df), function(x){
                         shifted <- rep(0, min(x-1, ncol(df)))
                         if(ncol(df)>=x) shifted <- c(shifted, df[x,1:(ncol(df)-x+1)])
                         unlist(shifted)}))
     a b c
[1,] 1 2 3
[2,] 0 1 2
[3,] 0 0 1
[4,] 0 0 0
[5,] 0 0 0