我正在尝试获取如下所示的数据:
物种 | 天 | 几周 |
---|---|---|
亚历山大长尾小鹦鹉 | -- | -- |
Acrocephalus sp. | -- | -- |
我的数据集有物种名称和观察日期,有129952行数据。它看起来像这样:
# A tibble: 129,952 × 6
`TAXONOMIC ORDER` `COMMON NAME` `SCIENTIFIC NAME` `OBSERVATION COUNT` `OBSERVATION DATE` ...6
<dbl> <chr> <chr> <chr> <dttm> <dbl>
1 10444 Accipiter sp. Accipiter sp. 1 2018-01-21 00:00:00 NA
2 27278 Accipiter sp. Accipiter sp. 1 2019-10-19 00:00:00 NA
3 22631 Accipiter sp. Accipiter sp. 1 2019-10-19 00:00:00 NA
4 21017 Accipiter sp. Accipiter sp. 1 2020-12-13 00:00:00 NA
5 1498 Accipiter sp. Accipiter sp. 1 2020-12-13 00:00:00 NA
6 1871 Accipiter sp. Accipiter sp. 1 2021-01-31 00:00:00 NA
7 1871 Accipiter sp. Accipiter sp. 1 2021-01-31 00:00:00 NA
8 5468 Accipiter sp. Accipiter sp. 1 2021-02-14 00:00:00 NA
9 30260 Accipiter sp. Accipiter sp. 1 2022-10-12 00:00:00 NA
10 10393 Acrocephalus sp. Acrocephalus sp. 1 2019-09-17 00:00:00 NA
# ℹ 129,942 more rows
# ℹ Use `print(n = ...)` to see more rows
我试图从这些数据中获得类似于下面建议的计算的结果:其中“eBird_data”是数据框,当前日期是“观察日期”,物种名称位于“通用名称”列中。
count(eBird_data,从“通用名”观察亚历山大鹦鹉日期开始的唯一天数)
然后,一旦我得到了这只鸟出现的唯一天数,然后使用观察日期来计算这只鸟在一年中出现的周数。
我尝试过使用 COUNT 函数,但它是为版本 4.2.3 构建的,所以它不允许我使用它,因为我更新了 R。我也尝试过 nrow 但这些可能是正确的函数,只是查找格式错误回答。
我不知道我是否走在正确的道路上,或者我应该从哪里开始。例如,我知道在 Excel 中,这适用于我所需的数据,但需要很长时间。
物种 | Excel表格中提到的名字 | 物种的独特日期 | 因此它存在 |
---|---|---|---|
Accipiter sp. | 9 | 6 | 2018-2022年6天 |
根据观察日期,2018 年 1 月至 2022 年 12 月之间将出现 6 个不同的周:
# A tibble: 129,952 × 6
`TAXONOMIC ORDER` `COMMON NAME` `SCIENTIFIC NAME` `OBSERVATION COUNT` `OBSERVATION DATE` ...6
<dbl> <chr> <chr> <chr> <dttm> <dbl>
1 10444 Accipiter sp. Accipiter sp. 1 2018-01-21 00:00:00 NA
2 27278 Accipiter sp. Accipiter sp. 1 2019-10-19 00:00:00 NA
3 22631 Accipiter sp. Accipiter sp. 1 2019-10-19 00:00:00 NA
4 21017 Accipiter sp. Accipiter sp. 1 2020-12-13 00:00:00 NA
5 1498 Accipiter sp. Accipiter sp. 1 2020-12-13 00:00:00 NA
6 1871 Accipiter sp. Accipiter sp. 1 2021-01-31 00:00:00 NA
7 1871 Accipiter sp. Accipiter sp. 1 2021-01-31 00:00:00 NA
8 5468 Accipiter sp. Accipiter sp. 1 2021-02-14 00:00:00 NA
9 30260 Accipiter sp. Accipiter sp. 1 2022-10-12 00:00:00 NA
10 10393 Acrocephalus sp. Acrocephalus sp. 1 2019-09-17 00:00:00 NA
# ℹ 129,942 more rows
# ℹ Use `print(n = ...)` to see more rows
您需要加载包
dplyr
,一旦可用,您就可以计算不同的日期和周数(计算周包lubridate
是需要的),如下所示:
library(dplyr)
library(lubridate)
# Assumes data is stored in variable 'data'
result <- data %>%
mutate(`OBSERVATION WEEK` = week(`OBSERVATION DATE`)) %>%
group_by(`COMMON NAME`) %>%
summarise(
num_days = n_distinct(`OBSERVATION DATE`),
num_weeks = n_distinct(`OBSERVATION WEEK`)
)