【问题标题】:Separate seasons within a one year in a multi-year dataset多年数据集中一年内的不同季节
【发布时间】:2021-05-14 16:55:32
【问题描述】:

我有一个数据集,其 ID 分配了多年。我正在尝试按每个 ID 在一年内的夏季月份和冬季月份过滤数据。例如,我想获取 ID 1 的夏季和冬季月份仅为 2010 年、仅 2011 年、仅 2012 年和仅 2013 年。

在实际数据集中,每个 ID 在数据集中的年数会有所不同。

这是我目前所拥有的:

library(lubridate)
library(tidyverse)

date <- rep_len(seq(dmy("01-01-2010"), dmy("31-12-2013"), by = "days"),1000)
ID <- rep(seq(1, 5), 100)

df <- data.frame(date = date,
                 x = runif(length(date), min = 60000, max = 80000),
                 y = runif(length(date), min = 800000, max = 900000),
                 ID)

#Filters for the core summer months
summer <- df %>% arrange(ID, date) %>%
  filter(month %in% 06:08) 
# Filters for the core winter months
winter <- df %>%  arrange(ID, date) %>%
  filter(month %in% c(01,02,03)) 

我正在尝试获取两个数据框:夏季月份和冬季月份,在这些数据框中,我希望将每个 ID 的季节分开。我希望这是有道理的。

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    我们可以创建一个新列“season_categ”并将其与“year”和“ID”一起用作分组变量

    library(dplyr)
    df1 <- df %>%
         mutate(season_categ = case_when(month %in% 6:8 ~ 'summer',
             month %in% 1:3 ~ 'winter')) %>%
         group_by(ID, year, season_categ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      相关资源
      最近更新 更多