从一些观察中删除秒数以使用 R 以 HM 格式工作
Posted
技术标签:
【中文标题】从一些观察中删除秒数以使用 R 以 HM 格式工作【英文标题】:Remove seconds from some observations to work in HM format using R 【发布时间】:2020-11-23 02:34:20 【问题描述】:我有一个名为“时间”的列,其中一些观察结果是“小时:分钟:秒”,而其他的只有“小时:分钟”。我想删除秒数,只剩下几小时和几分钟。
到目前为止,我已经加载了lubridate
包并尝试了:
format(data$time ,format = "%H:%M")
但没有发生任何变化。
还有:
data$time <- hm(data$time)
所有带有 h:m:s 的观察结果都变成了 NAs
我该怎么办?
【问题讨论】:
请使用dput
或我们可以复制和使用的东西添加数据。还显示共享数据的预期输出。了解how to ask a good question 和how to give a reproducible example。
您的问题很可能来自失败 a) 理解应用函数不会更改其参数,除非您将值分配回去,并且 b) 不清楚您打算如何处理结果.
嗨 Rodrigo,如果我的回答对accept the answer 有帮助,请点击左侧的复选标记。每个帖子只能接受一个答案。
【参考方案1】:
您可以使用lubridate
中的parse_date_time
将时间转换为POSIXct
格式,然后使用format
保留您需要的信息。
data <- data.frame(time = c('10:04:00', '14:00', '15:00', '12:34:56'))
data$time1 <- format(lubridate::parse_date_time(x, c('HMS', 'HM')), '%H:%M')
data
# time time1
#1 10:04:00 10:04
#2 14:00 14:00
#3 15:00 15:00
#4 12:34:56 12:34
【讨论】:
明确区分这些列的不同类别会很有帮助。格式化的结果可能与日期时间列的行为不同。【参考方案2】:非常感谢。 我忘了显示预期的结果,但你所做的正是我想要的。
我将“时间”列分配给对象“x”,结果如您所指:
data <- data.frame(time = c('10:04:00', '14:00', '15:00', '12:34:56'))
x <- data$time
data$time1 <- format(lubridate::parse_date_time(x, c('HMS', 'HM')), '%H:%M')
data
# time time1
#1 10:04:00 10:04
#2 14:00 14:00
#3 15:00 15:00
#4 12:34:56 12:34
【讨论】:
我认为这与我的答案相同。而不是写相同的答案,你应该删除它并接受我的答案。以上是关于从一些观察中删除秒数以使用 R 以 HM 格式工作的主要内容,如果未能解决你的问题,请参考以下文章
Openpyxl - 从 Excel 文件中的所有工作表中删除格式