首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从R中的系数列中提取时间

从R中的系数列中提取时间
EN

Stack Overflow用户
提问于 2018-02-23 18:50:21
回答 1查看 676关注 0票数 0

我想从R中具有以下特征的表列sd_data$start中提取时间:

代码语言:javascript
复制
str(sd_data$start)
Factor w/ 122 levels "01/03/2017 08:00",..: 1 2 5 10 12 14 18 19 20 21 ...

我在论坛上发现了类似的问题,但到目前为止,所有的答案都只给了我NAs或空值(00:00:00),所以我没有其他选择,只能再次针对我的数据集提出这个问题。

我已经设法提取日期并将它们移动到表中的新列中,并且我非常惊讶(至少对我来说)在几小时、几分钟和几秒内做同样的事情是多么困难。我一定是忽略了什么。

代码语言:javascript
复制
sd_data$start_date <- as.Date(sd_data$start,format='%d/%m/%Y')
sd_data$start_time <-  

提前感谢您帮助我找到正确的代码行来完成此任务。

这里有一个例子,说明了我正在尝试做什么,以及我在哪里没有得到时间。

代码语言:javascript
复制
smpldata <- "01/03/2017 08:00"
smpltime <-as.Date(as.character(smpldata),format='%d/%m/%Y %M:%S')
smpltime
# [1] 08:00 = what I would like to see
# [1] "2017-03-01" = what I am seeing
EN

回答 1

Stack Overflow用户

发布于 2018-02-23 18:59:46

可能在转换为日期之前使用as.character()转换为字符,因为因子类型转换得不好。并包括如上Sotos所建议的日期格式上的其它字符串元素。

代码语言:javascript
复制
sd_data$start_date <-
  as.Date(as.character(sd_data$start),
          format='%d/%m/%Y %H:%M:%S')

另一个技巧是看看lubridate包。这对这类任务非常有用。

代码语言:javascript
复制
library(lubridate)

smpldata <- as.factor("01/03/2017 08:00")
(smpltime <-dmy_hm(as.character(smpldata)))

[1] "2017-03-01 08:00:00 UTC"

在这里,您仍然可以看到日期。您可以使用hour()minute()处理绘图和其他需要的时间。

代码语言:javascript
复制
hour(smpltime)
[1] 8

minute(smpltime)
[1] 0

或者,您可以使用format()函数来精确地获取您想要的内容。

代码语言:javascript
复制
format(smpltime, "%H:%M:%S")
[1] "08:00:00"

format(smpltime, "%H:%M")
[1] "08:00"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48946104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档