根据互惠条件对数据框进行子集化
Subset a dataframe based on reciprocity conditions
我有以下数据帧结构
date
latitude
1951-03-22
66.08106
1951-03-22
59.59117
1951-04-08
59.59117
1952-10-20
55.41972
1960-08-12
66.05653
1960-09-10
66.08106
我想做的是:select 所有唯一纬度的行,如果有 2 个(或更多)完全相同的纬度,我只想保留最早日期的那个 但每年.
因此,对于我之前的示例,它将给出以下子集,而不仅仅是第 3 行:
date
latitude
1951-03-22
66.08106
1951-03-22
59.59117
1952-10-20
55.41972
1960-08-12
66.05653
1960-09-10
66.08106
非常感谢您的帮助。
PS:也许重要的是要明确 class(df$date) 是“日期”并且 class(df$latitude) 是“数字”。
从'date'中提取的'latitude'和year
分组,使用slice_max
提取具有最大日期的行,然后删除'year'列
library(dplyr)
library(lubridate)
df1 %>%
# grouped by latitude, and year extracted from Date class
# year is from lubridate
group_by(latitude, year = year(date)) %>%
# slice 1 row from each group, ordered by the 'date' column
slice_max(n = 1, order_by = date) %>%
# remove the grouping
ungroup %>%
# remove the year column
select(-year) %>%
arrange(date)
-输出
# A tibble: 5 × 2
date latitude
<chr> <dbl>
1 1951-03-22 66.1
2 1951-04-08 59.6
3 1952-10-20 55.4
4 1960-08-12 66.1
5 1960-09-10 66.1
我有以下数据帧结构
date | latitude |
---|---|
1951-03-22 | 66.08106 |
1951-03-22 | 59.59117 |
1951-04-08 | 59.59117 |
1952-10-20 | 55.41972 |
1960-08-12 | 66.05653 |
1960-09-10 | 66.08106 |
我想做的是:select 所有唯一纬度的行,如果有 2 个(或更多)完全相同的纬度,我只想保留最早日期的那个 但每年.
因此,对于我之前的示例,它将给出以下子集,而不仅仅是第 3 行:
date | latitude |
---|---|
1951-03-22 | 66.08106 |
1951-03-22 | 59.59117 |
1952-10-20 | 55.41972 |
1960-08-12 | 66.05653 |
1960-09-10 | 66.08106 |
非常感谢您的帮助。
PS:也许重要的是要明确 class(df$date) 是“日期”并且 class(df$latitude) 是“数字”。
从'date'中提取的'latitude'和year
分组,使用slice_max
提取具有最大日期的行,然后删除'year'列
library(dplyr)
library(lubridate)
df1 %>%
# grouped by latitude, and year extracted from Date class
# year is from lubridate
group_by(latitude, year = year(date)) %>%
# slice 1 row from each group, ordered by the 'date' column
slice_max(n = 1, order_by = date) %>%
# remove the grouping
ungroup %>%
# remove the year column
select(-year) %>%
arrange(date)
-输出
# A tibble: 5 × 2
date latitude
<chr> <dbl>
1 1951-03-22 66.1
2 1951-04-08 59.6
3 1952-10-20 55.4
4 1960-08-12 66.1
5 1960-09-10 66.1