R 按日期分组并将行折叠为单个行

R 按日期分组并将行折叠为单个行,r,dataframe,R,Dataframe,我在寻找一种方法把df引入dfres Dfres是 obj <- date #where type == I5, min <- min(date) #where type == I6, max <- max(date) #where type == I6, obj使用dplyr的想法是 library(dplyr) df %>% filter(type == 'I6') %>% group_by(year) %>% summaris

我在寻找一种方法把df引入dfres

Dfres是

obj <- date      #where type == I5,
min <- min(date) #where type == I6, 
max <- max(date) #where type == I6,

obj使用
dplyr
的想法是

library(dplyr)

df %>% 
 filter(type == 'I6') %>% 
 group_by(year) %>% 
 summarise(min_d = min(date), max_d = max(date)) %>% 
 full_join(df[df$type == 'I5',], ., by = 'year') %>% 
 select(-type) %>% 
 arrange(year)

#  year       date      min_d      max_d
#1 2014 2014-09-04 2014-04-11 2014-06-03
#2 2015 2015-05-01 2015-03-14 2015-08-01
#3 2016 2016-11-05 2016-03-17 2016-06-01
#4 2017       <NA> 2017-03-08 2017-05-15
库(dplyr)
df%>%
过滤器(类型=='I6')%>%
组别(年份)%>%
总结(最小值=最小值(日期),最大值=最大值(日期))%>%
完全联接(df[df$type='I5',],,by='year')%>%
选择(-type)%%>%
安排(年)
#年份日期最小值最大值
#1 2014 2014-09-04 2014-04-11 2014-06-03
#2 2015 2015-05-01 2015-03-14 2015-08-01
#3 2016 2016-11-05 2016-03-17 2016-06-01
#4 2017        2017-03-08 2017-05-15

A
数据。表
方法为:

 library(data.table)
 setDT(df)
 i5 <- df[type == 'I5', .(obj = date), by = year]
 i6 <- df[type == 'I6', .(min = min(as.Date(date)), max = max(as.Date(date))), by = year]
 dfres <- merge(i5, i6, by = 'year', all = TRUE)
库(data.table)
setDT(df)
i5
 library(data.table)
 setDT(df)
 i5 <- df[type == 'I5', .(obj = date), by = year]
 i6 <- df[type == 'I6', .(min = min(as.Date(date)), max = max(as.Date(date))), by = year]
 dfres <- merge(i5, i6, by = 'year', all = TRUE)