gpt4 book ai didi

r - 在 R 中减去由日期和时间组成的两列

转载 作者:行者123 更新时间:2023-12-04 10:20:17 24 4
gpt4 key购买 nike

我在减去由单个单元格中的日期和时间组成的表格的两列时遇到问题。

> TimeData

DEPARTURE_TIME LAB_TIME
1/30/2010 4:18 1/30/2010 0:29
1/30/2010 4:18 1/30/2010 0:29
1/30/2010 6:49 1/30/2010 0:48
1/30/2010 6:49 1/30/2010 0:48
1/30/2010 9:42 1/30/2010 1:29
1/30/2010 9:42 1/30/2010 1:29
1/30/2010 7:25 1/30/2010 1:16

我需要以小时和分钟为单位获得出发时间和实验室时间之间的差异。

我需要分开时间和日期还是有办法以这种方式减去数据?

我真的很感激任何帮助。

最佳答案

试试 TimeData$DEPARTURE_TIME - TimeData$LAB_TIME ?

这取决于您的 xxx_TIME列是字符串或者您是否已将它们转换为日期时间。

假设它们是字符串(它们已被使用 read.csv 或类似的东西读入);然后将它们转换为日期时间对象,您可以使用 as.POSIXct (见 ?as.POSIXctstrptime):

# convert the string columns to dates
TimeData$DEPARTURE_TIME <- as.POSIXct(TimeData$DEPARTURE_TIME,
format='%m/%d/%Y %H:%M')
TimeData$LAB_TIME <- as.POSIXct(TimeData$LAB_TIME,
format='%m/%d/%Y %H:%M')

请注意 format参数:看起来你的格式是月/日/年小时:分钟(25 小时制)。见 ?strptime有关日期格式的更多信息。

然后要计算差异,您可以执行以下任一操作:
diffs <- TimeData$DEPARTURE_TIME - TimeData$LAB_TIME

为您选择合适的时间单位,或指定您可以使用的小时数 difftime (见 ?difftime):
# like saying DEPARTURE_TIME-LAB_TIME but more control over the output
diffs <- difftime(TimeData$DEPARTURE_TIME,TimeData$LAB_TIME,units="hours")

结果对象 diffs看起来像这样:
> diffs
Time differences in hours
[1] 3.816667 3.816667 6.016667 6.016667 8.216667 8.216667 6.150000
attr(,"tzone")
[1] ""

要仅提取数字部分,请使用 as.numeric(diffs) .
要将其转换为小时向量和分钟向量……好吧,60 分钟到一秒,等等:
# use as.numeric(diffs) to retrieve just the vector.
# let's convert to hours & minutes...
diffs.hours <- floor(as.numeric(diffs))
diffs.minutes <- (as.numeric(diffs)%%1 * 60)

给你:
> diffs.hours
[1] 3 3 6 6 8 8 6
> diffs.minutes
[1] 49 49 1 1 13 13 9

关于r - 在 R 中减去由日期和时间组成的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9372521/

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