r - 压缩和连接数据框
问题描述
我有一个数据框,我正试图与另一个数据框合并,我遇到了一些问题,我认为这些问题可以追溯到每个观察结果都是事件而不是累积量的事实。我有下面的数据框,其中每一行都是一个单独的观察值,然后我将使用week
和code
将其与基于相同变量的另一个数据框week
和code
.
数据框a
将每一行作为一个特定的观察值,但我需要它按代码/日期成为累积观察值/行。我完全被难住了。
date count code week
<date> <dbl> <dbl> <dbl>
1 2020-06-07 4 13309 23
2 2020-06-07 5 13309 23
3 2020-07-12 6 18099 28
4 2020-07-12 8 18099 28
需要成为
date count code week
<date> <dbl> <dbl> <dbl>
1 2020-06-07 9 13309 23
2 2020-07-12 14 18099 28
然后,它将能够与数据框合并 b
date color name code week
<date> <char> <char> <dbl> <dbl>
1 2020-06-07 Blue A 13309 23
1 2020-06-07 Yellow B 13309 23
1 2020-06-07 Purple D 13309 23
3 2020-07-12 Yellow A 18099 28
3 2020-07-12 Blue E 18099 28
最终结果将是
date color name code week count
<date> <char> <char> <dbl> <dbl> <dbl>
1 2020-06-07 Blue A 13309 23 9
1 2020-06-07 Yellow B 13309 23 9
1 2020-06-07 Purple D 13309 23 9
3 2020-07-12 Yellow A 18099 28 14
3 2020-07-12 Blue E 18099 28 14
我最初使用下面的代码来执行此操作,但它完全炸毁了我的数据框。我的尺寸从dim(a) == (209807, 86)
到dim(merged) == (1367029, 89)
。我尝试了多种类型的连接(右、左、内等),但所有这些仍然破坏了数据框(由大约 100 个观察值变化,但仍然导致超过一百万行)。这就是为什么我认为这个问题是由于a
在特定日期对特定代码的每个观察与总结观察。
merged <- right_join(x = b,
y = a,
by = c("code" = "code",
"week" = "week"))
解决方案
a %>%
group_by(date, code, week) %>%
summarize(count = sum(count)) %>%
ungroup() %>%
left_join(b, ., by = c("date", "code", "week"))
# date color name code week count
# 1 2020-06-07 Blue A 13309 23 9
# 2 2020-06-07 Yellow B 13309 23 9
# 3 2020-06-07 Purple D 13309 23 9
# 4 2020-07-12 Yellow A 18099 28 14
# 5 2020-07-12 Blue E 18099 28 14
推荐阅读
- flutter - 应用程序关闭时如何在 Flutter 应用程序中播放铃声?
- mysql - Laravel selectSub 与 IFNULL
- macos - 加载扩展部分默认时出错 [openssl, mac]
- c# - 将一个字节数组拆分为不同的字节数组
- python - 列表列表中的字符串
- node.js - 如何使用 puppeteer 滚动亚马逊优惠页面?
- ios - AVPlayer 跳回约 10 秒并重播部分流
- python - ValueError:无法为具有形状“(?,1)”的张量“TargetsData / Y:0”提供形状(64,)的值
- reactjs - react-native-paho-mqtt 库未连接
- flutter - 当我尝试将列表作为参数传递给颤振中的另一个类时出现错误