gpt4 book ai didi

r - 将月份添加到 R 中 data.table 的 IDate 列

转载 作者:行者123 更新时间:2023-12-01 01:11:07 25 4
gpt4 key购买 nike

我一直在使用 data.table 几乎所有我使用 data.frames 的东西,因为它在大内存数据(几百万行)上要快得多。但是,我不太确定如何在不使用 apply (非常慢)的情况下向 IDate 列添加天数或月数。

一个最小的例子:

dates = c("2003-01-01", "2003-02-01", "2003-03-01", "2003-06-01", "2003-12-01", 
"2003-04-01", "2003-05-01", "2003-07-01", "2003-09-01", "2003-08-01")
dt = data.table(idate1=as.IDate(dates))

现在,假设我想创建一个日期提前 6 个月的列。通常,对于单个 IDate,我会这样做:
seq(dt$idate1[1],by="6 months",length=2)[2]

但这不起作用,因为 from= 的长度必须为 1:
dt[,idate2:=seq(idate1,by="6 months",length=2)[2]]

有没有一种有效的方法可以在 dt 中创建列 idate2?

非常感谢,
RR

最佳答案

一种方法是使用 mondate打包并添加月份,然后将其转换回 iDate类对象。

require(mondate)
dt = data.table(idate1=as.IDate(dates))
dt[, idate2 := as.IDate(mondate(as.Date(idate1)) + 6)]

# idate1 idate2
# 1: 2003-01-01 2003-07-01
# 2: 2003-02-01 2003-08-02
# 3: 2003-03-01 2003-09-01
# 4: 2003-06-01 2003-12-02
# 5: 2003-12-01 2004-06-01
# 6: 2003-04-01 2003-10-02
# 7: 2003-05-01 2003-11-01
# 8: 2003-07-01 2004-01-01
# 9: 2003-09-01 2004-03-02
# 10: 2003-08-01 2004-02-01

虽然,我想可能还有其他更好的解决方案。

关于r - 将月份添加到 R 中 data.table 的 IDate 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15497547/

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