将日期列转换为新列中的月份和月份日期

时间:2017-04-14 07:12:58

标签: r time strptime

我有这种数据框

 dat <- read.table(text = " count     date    
                              0    10/05/2012  
                              1    10/05/2013  
                              1    10/05/2014  
                                   ",header = TRUE)

我想要一个包含以下格式的新变量:

> dat
  count       date DayMonth
1     0 10/05/2012    10-05
2     1 10/05/2013    10-05
3     1 10/05/2014    10-05

我尝试了某些版本的strptime函数,如dat$DayMonth<-strptime(dat$date, "%d/%m"),但得到了奇怪的重新排列。 如何获得所需的结果

2 个答案:

答案 0 :(得分:2)

使用包lubridateanydate的相同解决方案。

library(lubridate)
dat$DayMonth <- format(dmy(dat$date), "%d-%m")

# dmy stands for day,month,year, can you use ymd etc. 

library(anytime)
dat$DayMonth <- format(anydate(dat$date), "%d-%m")

答案 1 :(得分:1)

我们可以使用as.Dateformat

执行此操作
dat$DayMonth <- format(as.Date(dat$date, "%d/%m/%Y"), "%d-%m")
dat$DayMonth
#[1] "10-05" "10-05" "10-05"

使用strptime转换为POSIXlt/POSIXct类,我们可以使用format

将其更改为格式

注意:没有使用外部包