R-将秒转换为小时和分钟

时间:2018-08-05 12:00:15

标签: r

我有一个这样的数据框,

Time ColA Colb
123  A     B

我想将其转换为这样的数据框,

Hours Minutes ColA Colb
0      2       A    B

时间列中的值以秒的形式出现。如何将其转换为小时和分钟?

2 个答案:

答案 0 :(得分:3)

我使用以下R代码重现类似的示例:

library("lubridate")
library("dplyr")

Data <- data.frame(Time = seq(from = 100, to = 1200, by = 100),
                   ColA = rnorm(n = 12, mean = 0, sd = 1),
                   ColB = rnorm(n = 12, mean = 10, sd = 1))

这将生成一个包含三列的DataFrame,如:Time,ColA和ColB。结果看起来像这样:

   Time    ColA      ColB
1  100  0.3819418  9.793732
2  200 -0.6819604  9.809536
3  300 -1.5910664 10.491511
4  400  0.5091230  8.251863
5  500  1.4298513 10.939813

基于此,您可以使用 lubridate dplyr 库来获得所需的结果,如下:

Data %>%
    mutate(Hours = hour(seconds_to_period(Time)),
           Minutes = minute(seconds_to_period(Time))) %>%
    select(Hours, Minutes, ColA, ColB)

哪个会产生以下结果:

     Hours Minutes   ColA      ColB
1      0       1  0.3819418  9.793732
2      0       3 -0.6819604  9.809536
3      0       5 -1.5910664 10.491511
4      0       6  0.5091230  8.251863
5      0       8  1.4298513 10.939813

该代码背后的逻辑如下:

首先,您要使用 seconds_to_period() <>将秒转换为 期间 (润滑对象代表时间流逝) / strong>功能。结果看起来像这样“ 2H 23M 20S” 然后,使用 hour()和minutes() 可以提取所需的单位,在这种情况下为数小时和数分钟。最后,您可以使用 select() 选择要保留的变量。希望对您有所帮助!

答案 1 :(得分:1)

没有其他软件包,您可以使用%/%,即整数除法(类似于注释中A. Suliman的解决方案):

df$Hour <- df$Time %/% (60 * 60)
df$Minute <- df$Time %/% 60
df
#  Time ColA Colb Hour Minute
#1  123    A    B    0      2

数据

df <- read.table(text = "Time ColA Colb
123  A     B", header = TRUE, stringsAsFactors = FALSE)