我有一个这样的数据框:
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?
中实现这一目标答案 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