【发布时间】:2021-01-12 21:03:14
【问题描述】:
我有 2 个数据框:
df1 列出了一年中不同周收到代金券的人。它显示每个客户在哪周收到他们的代金券。 df2 有 df1 中的人的日常交易。
每个数据框都有数百万行
我想: 1- 按周拆分 df1,得到 52 个数据帧(df1.1、df1.2、df1.3.....df1.52) 2- 对于 52 个数据帧中的每一个,我想执行以下操作:
df2[df2$customer_ID %in% df1.1$customer_ID, ] %>%
group_by(week_num) %>%
summarise(tot_sales = sum(sales)
每次循环创建一个包含一行的数据框,即一周。
因此生成的数据框 (df3) 将有 52 行。
到目前为止,我有以下内容:
datalist <- list()
df1_split <- split(df1, df1$week_number)
for (i in seq_along(df1_split)){
for (j in df2$week_number){
df2[df2$customer_ID %in% df1_split[[i]]$customer_ID, ] %>%
mutate(week_received = j) %>%
group_by(week_received) %>%
summarise(tot_sales = sum(sales))
datalist[[i]] <- dat
{
{
df3 <- bind_rows(datalist)
但这只是连续运行。我做错了什么?
提前谢谢你。
【问题讨论】:
-
我的意思是输入 j (mutate(week_received = j)。感谢您发现这一点。
-
在您的更新中,它现在使用
i提取df1的每一列,而不是来自df1_split的list元素 -
我现在已经尝试了解决方案,仍然连续运行。
-
没有可复现的例子是无法测试的
-
您真的不想在
week_num上使用merge或join而不是%in%?现在,无论week_num是什么,您的逻辑都会返回出现在df1中任何位置的df2客户。