R 将耗时变量切割为可管理的内容

R 将耗时变量切割为可管理的内容,r,R,我在处理数据集中播放的时间变量时遇到问题。我似乎不知道如何让R把这个值当作一个数字 如果以前有人问过,我会道歉 编辑: 好吧,鉴于下面贴的东西,我意识到有一些事情我以前不知道/检查过 首先,这是一个因素变量。我通读了lubridate包文档,由于我想执行算术运算(如果这是正确的术语),我相信duration函数是正确的 然而,看看这些例子——我不完全确定将其应用于来自的大型(ish)数据中的整个列的语法是什么。因为我有4.5k的观测值,所以我不确定该如何应用它。我不需要过多的粒度-理想情况下,甚

我在处理数据集中播放的时间变量时遇到问题。我似乎不知道如何让R把这个值当作一个数字

如果以前有人问过,我会道歉

编辑:

好吧,鉴于下面贴的东西,我意识到有一些事情我以前不知道/检查过

首先,这是一个因素变量。我通读了lubridate包文档,由于我想执行算术运算(如果这是正确的术语),我相信duration函数是正确的

然而,看看这些例子——我不完全确定将其应用于来自的大型(ish)数据中的整个列的语法是什么。因为我有4.5k的观测值,所以我不确定该如何应用它。我不需要过多的粒度-理想情况下,甚至数小时和数分钟都可以

所以我想我希望我的代码看起来像:

从因子变量到字符串的转换>从字符串到持续时间的转换/as.numeric。

请尝试以下代码:

flight_time
    11:42:00
    19:37:06
    18:11:17
#带因子的虚拟数据

df,它仅将
res
中的秒数作为数字返回。我假设@Anaryl希望将整个字符串转换为数字。查看
str(res)
,即
res@hour
res@minute
res@.Data
(秒)被正确地转换成一个恒定的刻度,可以做他想做的事情。我对lubridate不太熟悉,但在哈德利的小插曲中我看不到一个简单的方法。在你的第二个例子中,它应该是(1,1/60,1/(60*60))或(60,1,1/60)或(60*60,60,1),(60,60,60)只是将所有(小时,分钟和秒)乘以60。例如,18:11:17应为65477秒或1091.28分钟或18.19小时。与
行和
乘法器相同。否则,它应该可以工作。这是一个整体还是第二个独立的代码-第一个赋值的JUST-我需要覆盖大约4500个观察值-我是否正确地假设我可以像x一样传递子集,如果有任何帮助,数据集可以在这里找到抱歉,如果我评论过多。所以我把它应用到整个数据帧上,这实际上不是问题,它添加了一个新的变量“flight\u time\u int”-它以相同的格式显示持续时间…但我认为它是有效的!在确认之前,让我先玩一下它
#dummy data with factors
df <- data.frame(flight_time=c("11:42:00","19:37:06","18:11:17"))

#add Seconds column
df$Seconds <- 
  sapply(as.character(df$flight_time), function(i)
    sum(as.numeric(unlist(strsplit(i,":"))) * c(60^2,60,1)))

#result
df
#   flight_time Seconds
# 1    11:42:00   42120
# 2    19:37:06   70626
# 3    18:11:17   65477