gpt4 book ai didi

r - 将因子类型时间转换为分钟数

转载 作者:行者123 更新时间:2023-12-02 09:31:13 24 4
gpt4 key购买 nike

我的数据集中有一列包含 00:20:10 格式的时间。我有两个问题。首先,当我使用 read.xlsx2() 将其导入 R 时,该列将转换为因子类型。如何将其转换为时间类型?其次,我想计算每个人的总时间(以分钟为单位)。

ID      Time
1 00:10:00
1 00:21:30
2 00:30:10
2 00:04:10

我想要的输出是:

ID Total.time
1 31.5
2 34.3

我以前没有处理过时间问题,希望有人也推荐一些套餐。

最佳答案

您可以使用 chron 包中的 times()Time 列转换为“times”类。然后使用aggregate()对时间进行求和,并按ID列进行分组。第一个 block 将为我们提供结果中的实际时间。

library(chron)

df$Time <- times(df$Time)
aggregate(list(Total.Time = df$Time), df[1], sum)
# ID Total.Time
# 1 1 00:31:30
# 2 2 00:34:20

对于十进制输出,我们可以使用同样来自 chronmonths()seconds()

aggregate(list(Total.Time = df$Time), df[1], function(x) {
minutes(s <- sum(x)) + (seconds(s) / 60)
})
# ID Total.Time
# 1 1 31.50000
# 2 2 34.33333

此外,我们还可以使用data.table来提高效率。

library(data.table)
setDT(df)[, .(Total.Time = minutes(s <- sum(Time)) + (seconds(s) / 60)), by = ID]
# ID Total.Time
# 1: 1 31.50000
# 2: 2 34.33333

数据:

df <- structure(list(ID = c(1L, 1L, 2L, 2L), Time = structure(c(2L, 
3L, 4L, 1L), .Label = c("00:04:10", "00:10:00", "00:21:30", "00:30:10"
), class = "factor")), .Names = c("ID", "Time"), class = "data.frame", row.names = c(NA,
-4L))

关于r - 将因子类型时间转换为分钟数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com