R 基于筛选条件创建数据帧列表

R 基于筛选条件创建数据帧列表,r,filter,tidyverse,R,Filter,Tidyverse,我将有一个列ID的数据集。我将数据帧过滤到冬季和夏季。我想根据ID进一步分割数据。在我的实际数据集中有100多个ID,所以我不想制作100个数据帧。相反,我想制作一个数据帧列表。我使用了group\u split函数来实现这一点,但是列表的数量在冬季和夏季之间并不均衡。我确信在冬天和夏天应该有相同数量的ID。有更好的方法吗 library(lubridate) date <- rep_len(seq(dmy("26-12-2010"), dmy("20-12-

我将有一个列
ID
的数据集。我将数据帧过滤到冬季和夏季。我想根据ID进一步分割数据。在我的实际数据集中有100多个ID,所以我不想制作100个数据帧。相反,我想制作一个数据帧列表。我使用了
group\u split
函数来实现这一点,但是列表的数量在冬季和夏季之间并不均衡。我确信在冬天和夏天应该有相同数量的ID。有更好的方法吗

library(lubridate)
date <- rep_len(seq(dmy("26-12-2010"), dmy("20-12-2011"), by = "days"), 500)
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)
库(lubridate)
日期%
过滤器(月份百分比,单位为%c(01,02,03))$>%
分组依据(ID,.add=TRUE)%>%
#组分割(ID)

谢谢大家!

我认为
split
可以满足您的要求:生成一个帧列表


summer您的期望值是什么您的代码没有按编写的方式工作(
df
!=
df
),并且
AnimalID
DateAndTime
不存在。所以很难调试您的问题。试着包括一个。你检查过你“肯定知道”的东西是否是真的吗?我的预期输出是每个季节(冬季和夏季)的数据帧列表。这些列表中的每一个都是来自较大数据帧的单个ID。代码现在应该可以工作了,我在发布时忘记了更改这些代码。我道歉。是的,当我在不使用
group\u split
函数的情况下过滤它们时,夏季和冬季数据框中的个体数量是相同的。我定义了它。它用于创建月份列,以便更容易按月份进行筛选。很抱歉。
df$month <- month(df$date)
summer <- df%>% arrange(ID, date) %>%
  filter(month %in% 07:09) %>%
  group_by(ID, .add = TRUE) %>% 
  group_split(ID)


winter <- df%>% 
  arrange(ID, date) %>%
  filter(month %in% c(01,02,03)) $>% 
  group_by(ID, .add = TRUE) %>% 
  # group_split(ID)