【发布时间】:2018-09-06 20:58:15
【问题描述】:
我有一个数据框,其中包含气候站在给定年份的最高和最低温度 - All.Stations 数据集:
Station.Name Year Month Day TMAX TMIN
GRAND MARAIS 1942 7 28 82 60
GRAND MARAIS 1962 3 17 42 22
LEECH LAKE 1956 7 3 72 50
ALBERT LEA 3 SE 1998 1 25 25 15
TWO HARBORS 1933 5 20 77 42
ARGYLE 1922 9 13 NA NA
我还有一个完整年份的气候站数据框(即,这些年份我有一年中每一天的数据)-complete.years dataset:
Station.Name Year
DULUTH 1904
AGASSIZ REFUGE 1995
LEECH LAKE 1956
GRAND MARAIS 1942
LEECH LAKE 1994
我想将第一个数据帧过滤为仅存在 Station Name 和 Year 并在第二个数据帧中匹配的数据。
正确的结果是:
Station.Name Year TMAX
GRAND MARAIS 1942 82
LEECH LAKE 1956 72
这是我目前使用 dplyr 所做的:
Max.Tempurature <- All_Stations %>%
group_by(Station.Name, Year) %>%
select(Station.Name, Year, TMAX) %>%
filter(min_rank(desc(TMAX)) <= 1) %>%
filter((Year %in% complete.years$Year & Station.Name %in% complete.years$Station.Name))
我可以同时按 Year 和 Station.Name 进行过滤,但这会在整个数据框中搜索匹配项。
如何按同一观察中存在的 Station.Name 和 Year 进行过滤?
【问题讨论】:
-
绝对
inner_join是您最好的选择。查看@akrun 的回答