【发布时间】:2019-10-21 20:27:05
【问题描述】:
我想积累一个长期(包括不同年份)每天测量的变量。变量的累积应该从一年中的固定日期开始(例如,2 月 1 日,或者换句话说,一年中的某一天 (doy) 32 - 我以前在 doys 工作)。每年的 cumsum 应该在这个固定的日子开始。
我尝试使用setDT(df)[, whatiwant := cumsum(variable), by = rleid(DOY >= 32)] 或rle(DOY >= 32),但它们都没有考虑到每年的第一天。
理论上,ave() 函数应该可以正常工作,但我不知道如何在不同年份的 doy 之间创建一个标志变量(它通常只创建第一个)。
df <- data.frame(Date = seq(as.Date("2010-01-01"), by = 1, len = 1000),
Year = format(seq(as.Date("2010-01-01"), by = 1, len = 1000), "%Y"),
DOY = format(seq(as.Date("2010-01-01"), by = 1, len = 1000), "%j"),
Variable = rnorm(1000, mean=10, sd=3))
编辑: 谢谢你的帮助。 它如何与 data.table 包一起使用?
【问题讨论】:
-
scaumedes,欢迎来到 SO!我们无法具体回答您,因为我们不知道您的数据或您尝试过的代码。请让这个问题可重现。这包括示例代码(包括列出非基础 R 包)、示例明确数据(例如,
dput(head(x))或data.frame(x=...,y=...))和预期输出。参考:stackoverflow.com/questions/5963269、stackoverflow.com/help/mcve 和 stackoverflow.com/tags/r/info。