【发布时间】:2012-05-15 19:09:54
【问题描述】:
我有一个如下所示的 data.frame:
ID Date.A Date.B Variable
A 01/01/2012 03/24/2012 Apples
A 02/01/2012 03/24/2012 Oranges
B 01/01/2012 02/04/2012 Bananas
C 01/01/2012 04/22/2012 Apples
A 03/01/2012 03/24/2012 Grapes
B 02/01/2012 02/04/2012 Oranges
D 01/01/2012 03/15/2012 Apples
对于每个 ID,我需要找到对应于 Date.B 前一个月的第一天的变量。所以对于 ID A,我需要提取“Oranges”,因为 03/24/2012 - 1 个月 = 02/24/2012,而该月的第一天是 02/01/2012。
我对使用 lubridate 的日期计算没有任何问题:format.Date(df$Date.B - months(1), format="%Y-%m-01")。在不编写讨厌的 for 循环的情况下,我无法将该逻辑合并到 ddply 或以编程方式。不要求算法帮助或有人为我解决它,但希望看到一个使用与此类似的自定义日期逻辑的 ddply 示例。
提前致谢。
【问题讨论】:
-
找到了一些解决方法。 df$last.date
-
您能否解释一下您要为
ID C提取的内容,因为04/22/2012之前的第一个月是03/01/2012,而对于ID CDate.A,没有与此匹配的日期. -
mondate库可以处理这个问题:library(mondate); mondate("10-31-2012") - 1