从一列在R中使用difftime

时间:2018-12-20 14:30:17

标签: r difference difftime

您好,您可以帮我解决一栏R的(小时)差异。 我仅使用基本软件包R。我想用几小时创建新列 所以该列看起来像

hours<-c(0,24,23,21,31,26,28)

time<-c('10. 4. 2018 10:16:11', 
'11. 4. 2018 10:16:15', 
'12. 4. 2018 10:13:31',
'13. 4. 2018 8:16:31', 
'14. 4. 2018 15:16:21',
'15. 4. 2018 17:16:31', 
'16. 4. 2018 19:15:31')

我有一个专栏(时间),我想创建一个新列(小时)

谢谢

2 个答案:

答案 0 :(得分:1)

增强Sotos' approach

c(0, round(diff(as.POSIXct(time, format = '%d. %m. %Y %H:%M:%S'), units = "hours")))

接近OP的预期结果

[1]  0 24 24 22 31 26 26

数据

time <- c(
  '10. 4. 2018 10:16:11',
  '11. 4. 2018 10:16:15',
  '12. 4. 2018 10:13:31',
  '13. 4. 2018 8:16:31',
  '14. 4. 2018 15:16:21',
  '15. 4. 2018 17:16:31',
  '16. 4. 2018 19:15:31'
)

答案 1 :(得分:0)

另一种方法如下。

第一次强迫上课POSIXct

time <- as.POSIXct(time, format = "%d. %m. %Y %H:%M:%S")

现在使用difftime,它将以所需的单位给出结果。

c(0, difftime(time[-1], time[-length(time)]))
#[1]  0.00000 24.00111 23.95444 22.05000 30.99722 26.00278 25.98333

四舍五入的输出很容易获得。

round(c(0, difftime(time[-1], time[-length(time)])))
#[1]  0 24 24 22 31 26 26