【发布时间】:2015-09-12 17:31:28
【问题描述】:
我有一组关于在 r 的 data.frame 中使用的具有唯一 ID 的用户数量的数据。
ID start date end date amount
1 1-15-2012 2-15-2012 6000
1 2-15-2012 3-25-2012 4000
1 3-25-2012 5-26-2012 3000
1 5-26-2012 6-13-2012 1000
2 1-16-2012 2-27-2012 7000
2 2-27-2012 3-18-2012 2000
2 3-18-2012 5-23-2012 3000
....
10000 1-12-2012 2-24-2012 12000
10000 2-24-2012 3-11-2012 22000
10000 3-11-2012 5-27-2012 33000
10000 5-27-2012 6-10-2012 5000
每个 ID 的时间序列在不一致的时间开始和结束,并且包含不一致的观察次数。但是,它们都是以上述方式格式化的;开始和结束日期是 Date 对象。
我想将每个 ID 的细分标准化为每月时间序列,并在每个月初使用数据点,对观察到的数量进行加权,这些数量恰好跨越两个或多个月。 换句话说,我想把这个系列变成像
ID start date end date amount
1 1-1-2012 2-1-2012 3096 = 6000 * 16/31
1 2-1-2012 3-1-2012 4339 = 6000*15/31+4000*14/39
1 3-1-2012 4-1-2012 etc
....
1 6-1-2012 7-1-2012 etc
2 1-1-2012 2-1-2012 etc
2 2-1-2012 3-1-2012 etc
2 3-1-2012 4-1-2012 etc
2 4-1-2012 5-1-2012 etc
2 5-1-2012 6-1-2012 etc
....
10000 1-1-2012 2-1-2012 etc
....
10000 6-1-2012 7-1-2012 etc
其中 ID 1 在 2/1/12 和 3/1/12 之间的值是通过权衡 2012 年 1 月 15 日至 2012 年 2 月 15 日观测中 2 月登陆的天数(15 天/ 31 天)与该观测范围内的数量(6000)与 2 月的 2-15 至 3-25 观测范围内的天数(14 天/ 39 天,因为 2012 年是闰年)乘以该观察范围内的数量(4000),产生 6000*15/31+4000*14/39 = 4339。这应该针对每个 ID 时间序列进行。我们不考虑观察期都适合一个月的情况;但如果它们分布在两个多月内,则应在该月数内进行适当的称量。
我对 r 比较陌生,当然可以在这方面使用一些帮助!
【问题讨论】: