目前,我有很多数据。与数据相关,我也有日期。不幸的是,日期的格式如下(日(周一至周日),月(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
答案 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"