data.table 向上移动行

问题描述 投票:0回答:1

给出以下数据表:

Category <- c('A','A','A','A')                       
Year <- c(0,1,2,3) 
Amount1 <- c(0,100,200,300) 
Amount2 <- c(0,30,40,0) 
dt_1 <- data.table(Category, Year, Amount1, Amount2) 
dt_1

如何将 amount2 移动一行以获得下表(最后一行用 0 填充)

Category <- c('A','A','A','A')                       
Year <- c(0,1,2,3) 
Amount1 <- c(0,100,200,300) 
Amount2 <- c(30,40,0,0) 
dt_2 <- data.table(Category, Year, Amount1, Amount2) 
dt_2
r data.table lag data-wrangling shift
1个回答
0
投票

你需要

data.table::shift()
:

dt_1[, Amount2 := shift(Amount2, type="lead", fill=0)]
#    Category  Year Amount1 Amount2
#      <char> <num>   <num>   <num>
# 1:        A     0       0      30
# 2:        A     1     100      40
# 3:        A     2     200       0
# 4:        A     3     300       0
© www.soinside.com 2019 - 2024. All rights reserved.