R中许多列中日期之间的差异

R中许多列中日期之间的差异,r,R,我有如下数据: ID Date1 Date2 Date3 A 2016-04-25 09:15:29 2016-04-25 14:01:19 2016-04-26 13:28:19 B 2016-04-25 09:15:29 2016-04-25 14:01:19 2016-04-26 13:28:19 我希望每个日期组合之间的时间差(理想情况下,仅在时间上向前推进,即没有负面差异)。我知道如何手动执行此操作(): 有什么好的解决办法

我有如下数据:

ID Date1               Date2               Date3
A  2016-04-25 09:15:29 2016-04-25 14:01:19 2016-04-26 13:28:19
B  2016-04-25 09:15:29 2016-04-25 14:01:19 2016-04-26 13:28:19
我希望每个日期组合之间的时间差(理想情况下,仅在时间上向前推进,即没有负面差异)。我知道如何手动执行此操作():


有什么好的解决办法吗

这里有一种方法,基于
combn()
apply()


df谢谢你的工作。我在应用我的真实数据时遇到了一些问题。我想是因为我有更多的ID列来分组。cmb中的“-1L”是否删除ID列?是的,
-1L
删除
ID
列,因为它不能参与组合计算。关于分组,我假设您不需要按
ID
对该任务进行分组,因为示例代码不按
ID
进行分组(参考您的手动解决方案
df$Date2\u Date1是的,您是对的,我不需要按任何方式分组。我只需要将代码调整为“-2L”.My fault我应该完全按照格式类型发布。几乎。我刚刚得到这个错误:as.POSIXct.numeric(time1)中的错误:当我运行“res”时,必须提供“origin”。但我认为这一定是一个日期转换问题。我确信我会找到答案。
df$Date2_Date1 <- difftime(df$Date2,df$Date1, units = c("hours"))
nm1 <- outer(colnames(df), colnames(df), paste, sep="_")
indx1 <-  which(lower.tri(nm1, diag=TRUE))
df2 <- outer(1:ncol(df), 1:ncol(df), 
             function(x,y) df[,x]-df[,y])
ID Date2_Date1 Date3_Date1 Date3_Date2
A  x hours     y hour      ...
B  ..
df <- data.frame(
    ID=c('A','B'),
    Date1=as.POSIXct(c('2016-04-25 09:15:29','2016-04-25 09:15:29')),
    Date2=as.POSIXct(c('2016-04-25 14:01:19','2016-04-25 14:01:19')),
    Date3=as.POSIXct(c('2016-04-26 13:28:19','2016-04-26 13:28:19')),
    stringsAsFactors=F
);
cmb <- combn(seq_len(ncol(df)-1L)+1L,2L);
res <- abs(apply(cmb,2L,function(x) difftime(df[[x[1L]]],df[[x[2L]]],units='hours')));
colnames(res) <- apply(cmb,2L,function(x,cns) paste0(cns[x[1L]],'_',cns[x[2L]]),names(df));
res;
##      Date1_Date2 Date1_Date3 Date2_Date3
## [1,]    4.763889    28.21389       23.45
## [2,]    4.763889    28.21389       23.45