我有一个包含三列的数据集:月,日和年。月份是字符向量,并显示完整的月份名称。日期和年份矢量都是数字。我需要将月份名称转换为各自的数字,然后将所有三列组合成一个完整的日期(“mm-dd-yy”)。我曾试图使用lubridate,但没有成功。以下是我的数据集示例:
Month Day Year
JANUARY 1 1980
感谢。
答案 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.call
与sprintf
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 = '-')