创建具有多个对象和每个对象多个观测值的摘要数据集

我有一个数据集,其中包含来自本地商店的报告,每行都有客户的ID,购买日期和每次购买的总价值。 我想创建一个新图,其中每个客户ID都包含上个月的所有购买,甚至只是我选择的日期范围内的购买示例。 主要问题是某些客户可能每月购买一次,而其他客户则可能每天购买一次-因此,每个时间段的观察次数可能会有所不同。

我尝试将数据集设置为特定的时间范围,但是我选择了一个特定的日期-然后我只获得了所有客户的一小部分,或者我选择了一个范围并为某些客户获得了多个观察值。 (在这种情况下-我不介意获得最早的观察结果)

重要说明:我知道如何创建for循环来解决此问题,但是由于数据集的观察次数超过400万,因此这是不切实际的,因为运行时间非常长。

数据集的基本示例:

   ID Date Sum
1   1    1 234
2   1    2  45
3   1    3   1
4   2    4 223
5   3    5 546
6   4    6  12
7   2    1  20
8   4    3  30
9   6    2   3
10  3    5  45
11  7    6 456
12  3    7  65
13  8    8 234
14  1    9  45
15  3    2   1
16  4    3 223
17  6    6 546
18  3    4  12
19  8    7  20
20  9    5  30
21 11    6   3
22 12    6  45
23 14    9 456
24 15   10  65
....

新数据集如下所示:

ID 1Date 1Sum 2Date 2Sum 3Date 3Sum
1  1     234  2     45   3     1
2  1     20   4     223  NA    NA
3  2     1    5     546  5     45

...

感谢您的帮助!

shuangzai520 回答:创建具有多个对象和每个对象多个观测值的摘要数据集

如果dplyrtidyr的帮助下,我认为您可以做些什么

library(dplyr)
library(tidyr)
dd %>% group_by(ID) %>% mutate(seq=1:n()) %>% 
  pivot_wider("ID",names_from="seq",values_from = c("Date","Sum"))

dd是上面的示例数据框。

本文链接:https://www.f2er.com/3165251.html

大家都在问