r - 加入/合并整洁的时间序列数据 r
问题描述
我想知道在应用整洁数据的主体时加入时间序列数据的正确/最佳方法。
问题是连接函数连接了所有匹配的行。这导致连接数据集中的行数大量增加。
例如,如果我有两个带有时间序列的整洁数据集:
df1 <- data.frame(location = c(1, 1, 1, 1, 2, 2, 2, 2),
time = c(1, 2, 3, 4, 1, 2, 3, 4),
color = c(1, 2, 3, 4, 5, 6, 7, 8))
df2 <- data.frame(location = c(1, 1, 1, 1, 2, 2, 2, 2),
time = c(1, 2, 3, 4, 1, 2, 3, 4),
intensity = c(8, 7, 6, 5, 4, 3, 2, 1))
我看着 left_join 他们,我得到一个巨大的数据框,因为位置 1 的所有行都被捕获:
> left_join(df1, df2, by = "location")
location time.x color time.y intensity
1 1 1 1 1 8
2 1 1 1 2 7
3 1 1 1 3 6
4 1 1 1 4 5
5 1 2 2 1 8
6 1 2 2 2 7
7 1 2 2 3 6
8 1 2 2 4 5
9 1 3 3 1 8
10 1 3 3 2 7
11 1 3 3 3 6
12 1 3 3 4 5
13 1 4 4 1 8
14 1 4 4 2 7
15 1 4 4 3 6
16 1 4 4 4 5
17 2 1 5 1 4
18 2 1 5 2 3
19 2 1 5 3 2
20 2 1 5 4 1
21 2 2 6 1 4
22 2 2 6 2 3
23 2 2 6 3 2
24 2 2 6 4 1
25 2 3 7 1 4
26 2 3 7 2 3
27 2 3 7 3 2
28 2 3 7 4 1
29 2 4 8 1 4
30 2 4 8 2 3
31 2 4 8 3 2
32 2 4 8 4 1
我想要的是:
location time color intensity
1 1 1 1 8
2 1 2 2 7
3 1 3 3 6
4 1 4 4 5
5 2 1 5 4
6 2 2 6 3
7 2 3 7 2
8 2 4 8 1
我怎样才能通过“位置”加入这个整洁的数据?我必须先spread()
数据,join()
然后gather()
。如果我有很多时间步长和很多变量,那么这个解决方案似乎会非常费力。
鉴于时间序列数据的常见程度以及整洁数据的重要性,我假设有一种简单的方法来管理它。抱歉,如果我忽略了一些简单的事情。
解决方案
merge
功能可能是您在这里需要的:
> merge(df1, df2)
location time color intensity
1 1 1 1 8
2 1 2 2 7
3 1 3 3 6
4 1 4 4 5
5 2 1 5 4
6 2 2 6 3
7 2 3 7 2
8 2 4 8 1
推荐阅读
- javascript - 导出 Promise API 调用以进行重用
- python-3.x - 以下代码片段的高效实现
- android - LiveData、MutableLiveData 之间的区别
- android - 什么是在 Android Studio 中指示 AGPBI 错误?
- dialogflow-es - 使用 api 上传意图时无法从用户短语中提取实体
- hyperledger-composer - 使用查询功能如何获取资产总量?
- javascript - Angular 6反应形式输入值到大写
- php - 在自定义表中保存 WooCommerce 订单详细信息
- python - 如何通过唯一的rowID组合两个数据框,一个比另一个具有更少的值
- python - 如何在 scikit learn predict 中添加 none 选项