r - 如何根据两个条件从数据集中检索值并附加到另一个数据集
问题描述
我有一个包含特定日期和 ID 的数据集
date station_id
<date> <chr>
1 1978-01-01 US1CTFR0035
2 1978-01-01 US1NYSF0080
3 1978-01-01 USC00302964
4 1978-01-02 US1NYNS0037
5 1978-01-02 US1NYRC0002
6 1978-01-03 US1SCHR0014
我有另一个数据集,其中包含几乎所有 ID 的每个可用日期的数据
station_id date prcp
<chr> <chr> <dbl>
1 US1CTFR0035 03/04/2016 140
2 US1CTFR0035 04/04/2016 0
3 US1CTFR0035 05/04/2016 137
4 US1CTFR0035 06/04/2016 0
5 US1CTFR0035 07/04/2016 0
6 US1CTFR0035 08/04/2016 28
我想根据第二个数据集中的 station_id 和日期查找相应的值,并在数据 1 中附加一列。此外,数据 2 中将缺少一些相应的值,如果它是,我希望 R 返回 NA案子。
我尝试过的任何事情,R 都会给我;数据集的长度不同或错误消息相似。谁能帮我?谢谢
解决方案
将日期列data2
从字符更改为日期类,然后您可以加入两个数据集。
这可以使用dplyr
和lubridate
library(dplyr)
library(lubridate)
data1 %>% left_join(data2 %>%
mutate(date = dmy(date)), by = c('station_id', 'date'))
或在基础 R 中:
data2$date <- as.Date(data2$date, "%d/%m/%Y")
merge(data1, data2, by = c('station_id', 'date'), all.x = TRUE)
推荐阅读
- java - java 类检测,在任何 jdbc 连接实例创建之前注入代码
- flutter - 如何将异步函数中声明的变量调用到颤动的小部件中?
- arrays - 是否有与 ( (ptr + i)->marks ) 等价的形式,例如 ( ptr[i] .... )?
- flutter - struct.pack(' 的等效函数
在 Python 和 JavaScript 中都有一个名为
pack
在 JavaScript 中:
struct.pack('<I', 5311)
在 Python 中
pack("<I", 5311)
<- mongodb - 在匹配阶段后将展开的数组分组并保留父数据/结构
- python - Keras 多次预测
- office365 - 在 Outlook 加载项中,我可以在不使用图形 Api 包的情况下获取办公室图形 API 访问令牌吗
- python - 无法弄清楚如何在海龟模块中使用动画使子弹移动
- javascript - 根据条件减少 ngFor 循环变量
- reactjs - 在变量中遍历jsx,然后通过附加到ref来渲染它