gpt4 book ai didi

r - 如何滞后时间变量并保持格式?

转载 作者:行者123 更新时间:2023-12-01 20:10:13 24 4
gpt4 key购买 nike

我想滞后时间变量本身,格式改变,简单的例子:

data<-data.frame(number=seq(1:5), 
datetime=seq(as.POSIXct("2015/06/12"),as.POSIXct("2015/06/16"),by="1 day"))

number datetime
1 1 2015-06-12
2 2 2015-06-13
3 3 2015-06-14
4 4 2015-06-15
5 5 2015-06-16

我想要什么:

  number   datetime datetime.lag
1 1 2015-06-12 NA
2 2 2015-06-13 2015-06-12
3 3 2015-06-14 2015-06-13
4 4 2015-06-15 2015-06-14
5 5 2015-06-16 2015-06-15


data$datetime.lag<-c(NA, head(data$datetime, -1))

我得到了什么:

  number   datetime datetime.lag
1 1 2015-06-12 NA
2 2 2015-06-13 1434092400
3 3 2015-06-14 1434178800
4 4 2015-06-15 1434265200
5 5 2015-06-16 1434351600

为什么格式会改变?有更好的建议吗?

最佳答案

您可以使用 data.table 开发版本中的 shift,即 v.1.9.5。默认typelagn是1。安装devel版本的说明是here

library(data.table)
setDT(data)[, lagdt:= shift(datetime)][]
# number datetime lagdt
#1: 1 2015-06-12 <NA>
#2: 2 2015-06-13 2015-06-12
#3: 3 2015-06-14 2015-06-13
#4: 4 2015-06-15 2015-06-14
#5: 5 2015-06-16 2015-06-15

我们还可以得到多个滞后

setDT(data)[, paste0('lagDT', 1:2) :=shift(datetime, 1:2)][]
# number datetime lagDT1 lagDT2
#1: 1 2015-06-12 <NA> <NA>
#2: 2 2015-06-13 2015-06-12 <NA>
#3: 3 2015-06-14 2015-06-13 2015-06-12
#4: 4 2015-06-15 2015-06-14 2015-06-13
#5: 5 2015-06-16 2015-06-15 2015-06-14

关于r - 如何滞后时间变量并保持格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29689869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com