2
轉向我有一個數據幀是這樣的:如何在每一行中的R數據幀由它的行索引
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中實現此目的?
轉向我有一個數據幀是這樣的:如何在每一行中的R數據幀由它的行索引
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中實現此目的?
概括多一點,有以下的數據幀開始
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
哈克:'do.call(rbind,lapply(SEQ(nrow(DF)),函數(I){dplyr ::滯後( df [i,],i - 1,default = 0)}))' – alistaire
確定有一個'data.table :: shift'的方法來做到這一點,但我很累 – shayaa
相關文章:http:// stackoverflow。 com/questions/24143992 – zx8754