如何使用R转换日期

时间:2015-07-24 21:39:03

标签: r date

目前,我有很多数据。与数据相关,我也有日期。不幸的是,日期的格式如下(日(周一至周日),月(1月至12月)日期(1-31)小时:分钟:第二时区年)。我想将其转换为月/日(1-31)/年。以下是样本数据。

created_data
Sat Jun 20 23:45:03 +0000 2015
Sat Jun 20 23:45:06 +0000 2015
Sat Jun 20 23:45:06 +0000 2015
Sat Jun 20 23:45:08 +0000 2015
Sat Jun 20 23:45:11 +0000 2015
Sat Jun 20 23:45:13 +0000 2015
Sat Jun 20 23:45:14 +0000 2015
Sat Jun 20 23:45:15 +0000 2015

目前这是一种数据框架形式。我试图查看数据帧的格式如下:

Results
Jun 20 2015
Jun 20 2015
Jun 20 2015
Jun 20 2015
Jun 20 2015
Jun 20 2015
Jun 20 2015
Jun 20 2015 

以下是我尝试的代码但结果只是NA

strptime(x = created_data, format = "%m/%d/%Y")

Result = NA

3 个答案:

答案 0 :(得分:0)

首先,您必须将您的字符串转换为R知道如何处理的内容,例如POSIXct对象。

根据您的格式,您可以as.POSIXct(created_data), format="%a %b %d %X %z %Y")

一旦采用该格式,您可以使用以下格式将其转换回所需格式的字符串...

format(as.POSIXct(created_data, format="%a %b %d %X %z %Y"), format = "%Y/%m/%d")

答案 1 :(得分:0)

假设日期时间存储在字符向量中,以下内容应该有效。

library("stringr")
library("dplyr")

dates <- c("Sat Jun 20 23:45:03 +0000 2015", 
           "Sat Jun 20 23:45:06 +0000 2015", 
           "Sat Jun 20 23:45:06 +0000 2015", 
           "Sat Jun 20 23:45:08 +0000 2015", 
           "Sat Jun 20 23:45:11 +0000 2015", 
           "Sat Jun 20 23:45:13 +0000 2015", 
           "Sat Jun 20 23:45:14 +0000 2015", 
           "Sat Jun 20 23:45:15 +0000 2015")

str_split_fixed(dates, pattern = " ", n=6) %>% 
  as.data.frame() %>%
  mutate(new.date = as.Date(paste(V2, V3, V6), format = "%b %d %Y"))

基本的想法是使用str_split_fixed()将字符串拆分为各个部分,然后重新组合as.Date()中的部分

答案 2 :(得分:0)

只是没有其他软件包的基本R解决方案。

 x <- "Sat Jun 20 23:45:03 +0000 2015"
 x1 <- format(strptime(x, "%a %b %d %H:%M:%S %z %Y", tz = "GMT"), "%b %d %Y")
 x1
[1] "Jun 20 2015"
相关问题