r - 如何添加从“日期”列生成的繁殖季节列
问题描述
我有巢穴位置的数据点,每个数据点都有一列,其中包含找到的日期(dd/MM/yyyy)。我想生成另一列,说明这个巢是在哪个繁殖季节找到的(繁殖季节从一年开始,到下一年结束)。
因此,如果在上半年发现了一个巢穴,那么它就是当年和前一年的繁殖季节。或者,如果巢是在下半年(6月以后)发现的,那么繁殖季节就是当年和次年。
例如,25/04/2016 记录的数据点将是繁殖季节“2015-2016”,而 23/11/2018 的数据点将是繁殖季节“2018-2019”。
作为参考,我有从 2015 年底(即 2015-2016 繁殖季节)到 2021 年初(即 2020-2021)的数据点。
我可以在 R 中使用什么公式来生成此列 - 如果可能的话?
我已经给出了我的数据样本(+ 我想要的“繁殖季节”列)。以绿色突出显示的是繁殖季节代表当年和前一年的情况,蓝色是从年底到下一年的繁殖季节。我想生成一个 R 代码,可以自动为我创建这个“繁殖季节”列。
解决方案
一种方法是使用case_when
:
library(dplyr)
library(lubridate)
Data %>%
mutate(Date = dmy(Date)) %>% #convert date to date format
mutate(BreedingSeason = case_when(month(Date) < 7 ~ paste0(year(Date) - 1,"-",year(Date)),
month(Date) >= 7 ~ paste0(year(Date),"-",year(Date) + 1),
TRUE ~ NA_character_))
# Date Location Species Nest Weather BreedingSeason
#1 2016-03-15 Upper AMC Y R 2015-2016
#2 2016-09-22 Mid AMC Y R 2016-2017
#3 2017-01-07 Mid AMC Y D 2016-2017
#4 2018-12-05 Upper AMC Y D 2018-2019
#5 2020-11-29 Lower AMC Y D 2020-2021
数据(通过OCR获取,错误请见谅):
structure(list(Date = c("15/03/2016", "22/09/2016", "07/01/2017",
"05/12/2018", "29/11/2020"), Location = c("Upper", "Mid", "Mid",
"Upper", "Lower"), Species = c("AMC", "AMC", "AMC", "AMC", "AMC"
), Nest = c("Y", "Y", "Y", "Y", "Y"), Weather = c("R", "R", "D",
"D", "D")), row.names = c(NA, -5L), class = "data.frame")
推荐阅读
- python - 自动下载带有隐藏链接的 csv 文件
- oracle - unixODBC 连接失败 无法打开 lib - libsqora.so':找不到文件
- jekyll - Jekyll 在我的 id 名称周围加上空格,使它们毫无用处
- java - 保存在服务器中的非英文文件名显示为?
- xml - 如何将一个 xml 文档中的节点值添加到另一个 xml 文档中?
- node.js - 无法使用nodejs将媒体发布到twitter api
- c# - 新表单打开显示文本文件
- google-sheets-api - 如何计算通过谷歌电子表格 IMPORTHTML 功能实时获得的值的百分比变化?
- selenium-webdriver - 使用不同版本的 Chrome 运行 Selenium 测试
- javascript - 如何在我的代码中显示我已完成的任务?