R语言 处理时间格式

x8diyxa7  于 2023-06-27  发布在  其他
关注(0)|答案(1)|浏览(118)

我刚刚开始真正使用R,并且一直在使用包含时间值的数据集。我不确定是否有任何一般规则或有用的提示,以工作与时间,特别是上午/下午或24小时的时间格式。
我一直在做的这个dataframe的代码基本上是这样的:

cleanIntensities %>%
    group_by(Time) %>%
    summarise(avg = mean(TotalIntensity)) %>%

它当前在如下表格中输出整个 Dataframe :
| 时间|平均|
| - -----|- -----|
| 10:00:00 AM| 17.6437029|
| 10:00:00 PM| 9.0630531|
| 11:00:00 AM| 16.9212513|
| 下午11:00:00| 4.9966777|
| 上午12:00:00| 2.1295503|
| 12:00:00 PM| 19.8470716|
| 1:00:00 AM| 1.4190782|
| 下午1:00:00| 18.7752443|
| 2:00:00 AM| 1.0439443|
| 下午2:00:00| 18.8686211|
| 3:00:00| 0.4437299|
| 下午3点|15.5846995|
| 4:00:00 AM| 0.6330472|
| 下午4点|17.7166483|
| 5:00:00 AM| 4.9506438|
| 下午5点|21.6556291|
| 6:00:00 AM| 7.7712137|
| 下午6:00:00| 21.9216336|
| 7:00:00 AM| 10.7336198|
| 下午7点|21.3852097|
| 上午8:00:00| 14.6680988|
| 晚上8点|14.3399558|
| 上午9:00:00| 15.3877551|
| 晚上9点|12.0729282|
我想知道是否有任何方法可以帮助处理R中的日期/时间?你们都知道有什么有用的方法来格式化数据和安排它,以便时间更容易处理?

a11xaf1n

a11xaf1n1#

你可能有这样的数据。

head(dat1)
#          Time measure TotalIntensity
# 1 10:00:00 AM       1      25.869454
# 2 10:00:00 AM       2      29.014864
# 3 10:00:00 AM       3      15.055026
# 4 10:00:00 PM       1       5.674864
# 5 10:00:00 PM       2       6.480238
# 6 10:00:00 PM       3      12.996940

您可以使用aggregate轻松获得mean,而无需太在意时间变量的格式。

aggregate(TotalIntensity ~ Time, dat1, mean)
#           Time TotalIntensity
# 1  10:00:00 AM      23.313114
# 2  10:00:00 PM       8.384014
# 3  11:00:00 AM      17.776820
# 4  11:00:00 PM       1.168399
# 5  12:00:00 AM       7.009737
# 6  12:00:00 PM      19.640631
# 7   1:00:00 AM       5.532544
# 8   1:00:00 PM      20.548702
# 9   2:00:00 AM       8.509576
# 10  2:00:00 PM      17.705006
# 11  3:00:00 AM      -1.922801
# 12  3:00:00 PM      17.293739
# 13  4:00:00 AM      -4.448062
# 14  4:00:00 PM      15.827717
# 15  5:00:00 AM       1.019233
# 16  5:00:00 PM      25.799249
# 17  6:00:00 AM       6.160121
# 18  6:00:00 PM      18.491693
# 19  7:00:00 AM       8.040709
# 20  7:00:00 PM      24.649039
# 21  8:00:00 AM      13.159717
# 22  8:00:00 PM      13.084731
# 23  9:00:00 AM      11.334896
# 24  9:00:00 PM      17.210107

R中的标准时间格式是POSIX.ctPOSIX.lt。要将您的时间转换为正确的时间格式,您可以使用strptime。时间通常需要一个日期,我paste当前日期为示范。在format='%F %I:%M:%S %p'中,%F表示标准日期格式,例如"2023-06-24"%I:%M:%S::和%p AM/PM指示符。<decimal 1-12 hours>请注意,空格、百分比符号和冒号很重要。有关更多选项,请参阅文档?strptime。 Note, that spaces percent symbols and colons are important. See documentation ?strptime for more options.

dat1$Time_POSIX <- strptime(paste(Sys.Date(), dat1$Time), format='%F %I:%M:%S %p')

head(dat1)
#          Time measure TotalIntensity          Time_POSIX
# 1 10:00:00 AM       1      25.869454 2023-06-24 10:00:00
# 2 10:00:00 AM       2      29.014864 2023-06-24 10:00:00
# 3 10:00:00 AM       3      15.055026 2023-06-24 10:00:00
# 4 10:00:00 PM       1       5.674864 2023-06-24 22:00:00
# 5 10:00:00 PM       2       6.480238 2023-06-24 22:00:00
# 6 10:00:00 PM       3      12.996940 2023-06-24 22:00:00

相关问题