R Change Month / Combine Date&年矢量

时间:2015-02-17 04:10:23

标签: r date

我有一个包含三列的数据集:月,日和年。月份是字符向量,并显示完整的月份名称。日期和年份矢量都是数字。我需要将月份名称转换为各自的数字,然后将所有三列组合成一个完整的日期(“mm-dd-yy”)。我曾试图使用lubridate,但没有成功。以下是我的数据集示例:

Month      Day      Year
JANUARY    1        1980

感谢。

3 个答案:

答案 0 :(得分:3)

你可以尝试

v1 <-  do.call(paste, df1)
as.Date(v1, '%B %d %Y')

或使用lubridate

library(lubridate)
mdy(v1)

或者

 mdy(sprintf('%s %s %s', df1$Month, df1$Day, df1$Year))

或者您可以将do.callsprintf

一起使用
 mdy(do.call(sprintf, c(df1, list('%s %s %s'))))

答案 1 :(得分:2)

这有效:

您的数据示例:

df<-(read.table(text="
Month Day Year 
JANUARY 1 1980", header=T))



as.Date(paste(df$Month, df$Day, df$Year), format="%b %d %Y")

#"1980-01-01"

答案 2 :(得分:1)

由于您已将月/日/年分成单独的字段,因此直接字符串操作可能比转换为时间/日期类并返回更快:

MONTHS <- c('JANUARY',
'FEBRUARY',
'MARCH',
'APRIL',
'MAY',
'JUNE',
'JULY',
'AUGUST',
'SEPTEMBER',
'OCTOBER',
'NOVEMBER',
'DECEMBER')

library(stringr)
paste(str_pad(paste(match(myData$Month,MONTHS)), 2, side = "left", pad = "0"),
      str_pad(myData$Day, 2, side = "left", pad = "0"),
      substr(myData$Year,3,4),
      sep = '-')