从一些观察中删除秒数以使用 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 文件中的所有工作表中删除格式

观察事件中的R闪亮updateSelectInput不起作用

如何消除 DateFormat Flutter 中的秒数

从R覆盖数据时Excel图表中的错误

删除微秒并使日期时间列中的秒数为零?

小熊派BearPi-HM Micro正式合入OpenHarmony主干