我想从R中的表格列sd_data $ start中提取时间,具有以下特征:
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),所以除了专门针对我的数据集再提出问题外,没有别的选择。
我已经设法提取日期并将它们移动到表格中的新列,并且我很惊讶(至少对我来说)在几小时,几分钟和几秒钟内做同样的事情是多么困难。我必须忽略一些事情。
sd_data$start_date <- as.Date(sd_data$start,format='%d/%m/%Y')
sd_data$start_time <-
提前感谢您帮助我找到正确的代码行来完成此任务。
这里有一个我想要做的事情的例子,以及我没有得到时间的地方。
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
答案 0 :(得分:2)
在转换为日期之前,可能使用as.character()
转换为字符,因为因素类型没有很好地转换。并包括Sotos上面建议的日期格式的其他字符串元素。
sd_data$start_date <-
as.Date(as.character(sd_data$start),
format='%d/%m/%Y %H:%M:%S')
另一个提示是看一下lubridate包。它对于这类任务非常有用。
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()
来处理情节和其他需求的时间。
hour(smpltime)
[1] 8
minute(smpltime)
[1] 0
或者您可以使用format()
功能获得您想要的内容。
format(smpltime, "%H:%M:%S")
[1] "08:00:00"
format(smpltime, "%H:%M")
[1] "08:00"