2017-04-14 38 views
0

我有这样的数据帧的转换日期栏月份和月份的一天,新的一列

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 

我尝试了一些类似dat$DayMonth<-strptime(dat$date, "%d/%m")这样的strptime函数的版本,但得到了奇怪的结果。 我怎样才能获得期望的结果

+1

我想知道,为什么downvote?这是正确的输入和输出的合理问题。 – mql4beginner

回答

1

我们可以as.Date做到这一点,format

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

注意:没有使用外部包装

+1

谢谢@akrun – mql4beginner

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") 
相关问题