有没有办法找到我的数据集中特定鸟类的独特天数以及它存在的周数?

问题描述 投票:0回答:1

我正在尝试获取如下所示的数据:

物种 几周
亚历山大长尾小鹦鹉 -- --
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
count rstudio
1个回答
0
投票

您需要加载包

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`)
  )
© www.soinside.com 2019 - 2024. All rights reserved.