将日期格式从YY WW更改为DD-MM-YYYY

时间:2019-04-10 15:09:08

标签: r dataframe dplyr

我有一个看起来像这样的数据框

co_code   company_name   year   week   returns
1          A             2008    40     0.45
1          A             2008    41     0.33
1          A             2008    42     0.31
.
.
.
2          B             2002    01     0.22
2          B             2002    02     0.32
.
.
.

以此类推。年份和星期因公司而异。

我想要一个单独的列来替换日期和年份。这里的日期应该是一周的最后一天

输出应该看起来像这样

co_code   company_name   date        returns
1          A             2008-10-11    0.45
1          A             2008-10-18    0.33
1          A             2008-10-25    0.31
.
.
.
2          B             2002-01-07    0.22
2          B             2002-01-14    0.32

注意:-此更改不应影响数据框的顺序。行不应该被打扰

1 个答案:

答案 0 :(得分:2)

您可以使用此-

library(data.table)
setDT(dt)[,date:=as.Date(paste(year, week, 6, sep="-"), "%Y-%U-%u")]

输出-

co_code company_name year week returns       date
1:       1            A 2008   40    0.45 2008-10-11
2:       1            A 2008   41    0.33 2008-10-18
3:       1            A 2008   42    0.31 2008-10-25

输入数据-

dt <- read.table(text="co_code   company_name   year   week   returns
1          A             2008    40     0.45
1          A             2008    41     0.33
1          A             2008    42     0.31",header=T)

注意-我已经使用6th一周中的某天来匹配所需的输出。但是,我们可以将其更改为所需的任何内容。