【发布时间】:2020-11-24 19:40:59
【问题描述】:
我想我有一个非常简单的要求。我有以下数据框,其中“地点”是唯一标识符,而 start_date 和 end_date 可能重叠。每个 ID“地点”的值都是唯一的。
place start_date end_date value
1 2007-09-01 2010-10-12 0.5
2 2013-09-27 2015-10-11 0.7
...
我需要创建一个基于年份的变量,在其中我将时间序列按每年(从 1 月 1 日开始(即 2011-01-01)开始为那个特定的“地方”和“价值”。我的意思是这样的:
place year value
1 2007 0.5
1 2008 0.5
1 2009 0.5
1 2010 0.5
2 2013 0.7
2 2014 0.7
2 2015 0.7
...
对于两个不同的案例,有些案例存在重叠(即“地点”=1 和“年份”=2007),其中一个观察从一年开始,另一个观察从那一年继续。在这种情况下,我更喜欢在该特定年份结束的“价值”。因此,如果 place=1 的一个观察结果在 3 月以 2007 年结束,而另一个 place=1 从 4 月的 2007 年开始,那么如果有意义的话,place=1 的 year=2007 值将被标记为之前的“结束”值。
我只做到了这一点: 库(数据表) 数据 :=(start_date = as.Date(start_date), end_date = as.Date(end_date))] data[,num_mons:= length(seq(from=start_date, to=end_date, by='year')),by=1:nrow(data)]
我想写一个循环最有意义?
感谢您的帮助和建议。
【问题讨论】:
标签: r loops time-series data-manipulation