首页 > 解决方案 > 如何根据两个条件从数据集中检索值并附加到另一个数据集

问题描述

我有一个包含特定日期和 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 都会给我;数据集的长度不同或错误消息相似。谁能帮我?谢谢

标签: r

解决方案


将日期列data2从字符更改为日期类,然后您可以加入两个数据集。

这可以使用dplyrlubridate

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)

推荐阅读