r-如何从分组数据中的最后一个日期条目中减去第一个日期条目并控制输出格式

r-如何从分组数据中的最后一个日期条目中减去第一个日期条目并控制输出格式,r,dataframe,dplyr,R,Dataframe,Dplyr,这个问题非常类似于在另一个线程中提出的问题。我正在尝试实现类似的目标:在组(事件)中,从最后一个日期减去第一个日期。我正在使用这个线程的答案中提供的dplyr包和代码。从最后一个日期中减去第一个日期是可行的,但不能提供令人满意的结果;产生的时间差以数字显示,不同的时间单位(如分钟和小时)之间似乎没有区别-->前两个事件中的减法是正确的,但第三个事件中的减法不是正确的,即应为分钟。我如何通过dplyr操作输出,以便得到的减法实际上是时间差的正确反映?下面是我的数据样本(仅1组)和我使用的代码:

这个问题非常类似于在另一个线程中提出的问题。我正在尝试实现类似的目标:在组(事件)中,从最后一个日期减去第一个日期。我正在使用这个线程的答案中提供的dplyr包和代码。从最后一个日期中减去第一个日期是可行的,但不能提供令人满意的结果;产生的时间差以数字显示,不同的时间单位(如分钟和小时)之间似乎没有区别-->前两个事件中的减法是正确的,但第三个事件中的减法不是正确的,即应为分钟。我如何通过dplyr操作输出,以便得到的减法实际上是时间差的正确反映?下面是我的数据样本(仅1组)和我使用的代码:

    df<- structure(list(time = structure(c(1428082860, 1428083340, 1428084840, 
1428086820, 1428086940, 1428087120, 1428087240, 1428087360, 1428087480, 
1428087720, 1428088800, 1428089160, 1428089580, 1428089700, 1428090120, 
1428090240, 1428090480, 1428090660, 1428090780, 1428090960, 1428091080, 
1428091200, 1428091500, 1428091620, 1428096060, 1428096420, 1428096540, 
1428096600, 1428097560, 1428097860, 1428100440, 1428100560, 1428100680, 
1428100740, 1428100860, 1428101040, 1428101160, 1428101400, 1428101520, 
1428101760, 1428101940, 1428102240, 1428102840, 1428103080, 1428103620, 
1428103980, 1428104100, 1428104160, 1428104340, 1428104520, 1428104700, 
1428108540, 1428108840, 1428108960, 1428110340, 1428110460, 1428110640
), class = c("POSIXct", "POSIXt"), tzone = ""), event = c(1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3)), .Names = c("time", 
"event"), class = "data.frame", row.names = c(NA, 57L))

  df1 <- df %>%                                                     
  group_by(event) %>%                                           
  summarize(first(time),last(time),difference = last(time)-first(time))
df%
汇总(第一次,最后一次,差异=最后一次-第一次)

我们可以使用
difftime
并指定
单位
,以获得相同
单位
中的所有差异

df %>% 
   group_by(event) %>% 
   summarise(First = first(time),
             Last = last(time) , 
             difference= difftime(last(time), first(time), unit='hour'))

太棒了,太完美了!这个解决方案很简单,我应该自己想出来。谢谢