-1

您好,您能帮我解决一列中 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')

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

谢谢

4

2 回答 2

1

加强Sotos 的方法

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'
)
于 2018-12-21T08:28:15.153 回答
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
于 2018-12-21T09:48:20.953 回答