首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符转换日期(清华6月14日** 2018-05- 14 )

字符转换日期(清华6月14日** 2018-05- 14 )
EN

Stack Overflow用户
提问于 2018-05-16 10:41:48
回答 3查看 408关注 0票数 1

我有一个关于世界杯比赛的数据,包括日期、位置、match_name等。在这个数据栏中,我想将日期列转换为日期格式"2018-05-06“。

这是我的档案;

代码语言:javascript
复制
  date          match_name          price      
1 Thu Jun 14 Russia v Saudi Arabia  €453.92  
2 Fri Jun 15 Egypt v Uruguay        €90.00   
3 Tue Jun 19 Russia v Egypt         €297.45  
4 Wed Jun 20 Uruguay v Saudi Arabia €95.00   

这是我的期望;

代码语言:javascript
复制
  date          match_name          price      
1 2018-05-14 Russia v Saudi Arabia  €453.92  
2 2018-05-15 Egypt v Uruguay        €90.00   
3 2018-05-19 Russia v Egypt         €297.45  
4 2018-05-20 Uruguay v Saudi Arabia €95.00  
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-16 11:28:07

这当然不是最简单的方法,但我只是想让你得到一个快速的答案。

代码语言:javascript
复制
library(stringr)
library(dplyr)
Data=data.frame(date=c("Thu Jun 14","Fri Jun 15","Tue Jun 19","Wed Jun 20"),match_name=c("a","b","c","d"),price=c(1,2,3,4))
Data$date=as.character(Data$date)

regexp <- "[[:digit:]]+"
Data=mutate(Data,datenum=str_extract(Data$date, regexp))
Data=mutate(Data,monthnum=str_extract(Data$date, regexp))

Data=mutate(Data,monthname=str_extract(Data$date,"Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec"))

Data=mutate(Data,monthnum=if(Data$monthname=="Jan")
                      "01"
       else if(Data$monthname=="Feb")
         "02"
       else if(Data$monthname=="Mar")
         "03"
       else if(Data$monthname=="Apr")
         "04"
       else if(Data$monthname=="May")
         "05"
       else if(Data$monthname=="Jun")
         "06"
       else if(Data$monthname=="Jul")
         "07"
       else if(Data$monthname=="Aug")
         "08"
       else if(Data$monthname=="Sep")
         "09"
       else if(Data$monthname=="Oct")
         "10"
       else if(Data$monthname=="Nov")
         "11"
       else if(Data$monthname=="Dec")
         "12"
       )
mutate(Data,Final_Date=paste0("2018-",monthnum,"-",datenum))

导致

代码语言:javascript
复制
date match_name price datenum monthnum monthname Final_Date
1 Thu Jun 14          a     1      14       06       Jun 2018-06-14
2 Fri Jun 15          b     2      15       06       Jun 2018-06-15
3 Tue Jun 19          c     3      19       06       Jun 2018-06-19
4 Wed Jun 20          d     4      20       06       Jun 2018-06-20
票数 1
EN

Stack Overflow用户

发布于 2018-05-16 11:00:49

好吧,假设你有这个data.frame:

代码语言:javascript
复制
myDF <-as.data.frame(x=list(date=c("Thu Jun 14","Fri Jun 15","Tue Jun 19","Wed Jun 20")))

它构造了以下data.frame:

代码语言:javascript
复制
        date
1 Thu Jun 14
2 Fri Jun 15
3 Tue Jun 19
4 Wed Jun 20

假设每一场比赛都在2018年进行:

代码语言:javascript
复制
#for handling month abbreviations in English:
Sys.setlocale("LC_TIME", "en_US.UTF-8") 

myDF$date <- as.Date(paste0(substr(myDF$date,5,10),", 2018"),format="%b %d, %Y")

由此产生的myDF:

代码语言:javascript
复制
        date
1 2018-06-14
2 2018-06-15
3 2018-06-19
4 2018-06-20

如果有必要,你可以将2018年改为任何你喜欢的年份。

票数 1
EN

Stack Overflow用户

发布于 2018-05-16 12:14:10

要将变量"date“转换为'2018-05-14‘格式,您需要执行以下功能:

代码语言:javascript
复制
conv_date <- function(var, year){
  var <- as.Date(paste0(var, " ", year), '%a %b %d %Y')
  return(var)
}

其中:

  1. 变量-数据表中的变量(即“日期”)
  2. 你需要的那一年

示例:

代码语言:javascript
复制
yours_df$date <- conv_date(yours_df$date, 2018)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50368733

复制
相关文章

相似问题

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