r - 创建具有多个对象和每个对象多个观察值的汇总数据集
问题描述
我有一个包含本地商店报告的数据集,其中每行都有一个客户的 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
...
谢谢你的帮助!
解决方案
dplyr
我认为如果得到帮助,你可以做到这一点tidyr
library(dplyr)
library(tidyr)
dd %>% group_by(ID) %>% mutate(seq=1:n()) %>%
pivot_wider("ID", names_from="seq", values_from = c("Date","Sum"))
dd
上面的示例数据框在哪里。
推荐阅读
- java - Android 中的 Firebase 事件记录离线和在线
- reactjs - reactjs如何在编辑表单中显示数据
- r - 用应用函数替换 for 循环
- reactjs - 多个 env 文件在 docker 上选择哪一个 - 创建反应应用程序
- ios - SDWebImage 不加载图像直到我在 Swift 中滚动 tableView
- r - 闪亮的模块:如何使用 DT::datatables 访问 selected_rows?
- authentication - 尝试使用 OAuth 端点进行授权时,我收到无效的同意请求 [Snowflake]
- c# - 在给定 Microsoft.Odata.Edm.IEdmModel 的情况下,如何确定绑定操作(函数或操作)所属的 EntitySet?
- google-apps-script - 应用程序脚本 - 在现有文件夹中创建新的谷歌文档
- reactjs - 如何使用反应虚拟化创建包含大量数据并支持扩展行和固定列的复杂表?