【发布时间】:2016-09-17 09:42:49
【问题描述】:
我正在尝试根据我之前的问题 (Difference between dates in many columns in R) 调整答案。我已经意识到我只想要给定列和紧靠它左边的列之间的时间差。澄清示例:
df <- data.frame(
Group=c("A","B"),
ID=c(1,2),
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
)
我想要的输出是 Date2-Date1 和 Date3-Date2。这当然会扩展到许多列,即 Date4-Date3 等。但我不需要 Date3-Date1。澄清一下,我怎样才能为许多列自动执行此操作
df$Date2_Date1 <- difftime(df$Date2,df$Date1, units = c("hours"))
df$Date3_Date2 <- difftime(df$Date3,df$Date2, units = c("hours"))
感谢@bgoldst 的原始答案。我想我只需要调整下面的 cmb 以获得正确的顺序:
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))
谢谢
【问题讨论】:
标签: r