【发布时间】:2020-10-12 21:49:38
【问题描述】:
我有一个数据框,我正试图与另一个数据框合并,我遇到了一些问题,我认为这些问题可以追溯到这样一个事实,即每次观察都是一个事件而不是累积量。我有下面的数据框,其中每一行都是一个单独的观察结果,然后我将使用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"))
【问题讨论】: