在 R 中将字符串日期列转换为标准日期



给定一个数据帧,如下所示:

date    value   price
0  2010Y1-01m      NaN     NaN
1  2010Y1-02m   365.07  158.18
2  2010Y1-03m   653.19  268.53
3  2010Y1-04m   980.72  331.81
4  2010Y1-05m  1455.60  434.19

如何将date列转换为标准日期,%Y-%m-%d%Y-%m?谢谢。

输出1:

date    value   price
0  2010-01-01      NaN     NaN
1  2010-02-01   365.07  158.18
2  2010-03-01   653.19  268.53
3  2010-04-01   980.72  331.81
4  2010-05-01  1455.60  434.19 

输出2:

date     value   price
0  2010-01      NaN     NaN
1  2010-02   365.07  158.18
2  2010-03   653.19  268.53
3  2010-04   980.72  331.81
4  2010-05  1455.60  434.19

您可以使用as.Date转换为日期,然后使用format获取年-月格式的数据。

df$Date <- as.Date(paste0(df$date, '-01'), "%YY1-%mm-%d")
df$year_mon <- format(df$Date, "%Y-%m")
df
#        date   value  price year_mon
#0 2010-01-01     NaN    NaN  2010-01
#1 2010-02-01  365.07 158.18  2010-02
#2 2010-03-01  653.19 268.53  2010-03
#3 2010-04-01  980.72 331.81  2010-04
#4 2010-05-01 1455.60 434.19  2010-05

要转换为日期,通常需要三个组件年,月和日。我们在数据中有年份和月份,我们可以在这里使用paste0添加任意日期(01(。


如果年份中的"Y1"部分不是固定的,它可以是任何数字(如"Y2""Y3"(,您可以在转换为日期之前使用sub将其删除。

df$Date <- as.Date(sub('Y\d+', '-01', df$date), "%Y-%d-%mm")

数据

df <- structure(list(date = c("2010Y1-01m", "2010Y1-02m", "2010Y1-03m", 
"2010Y1-04m", "2010Y1-05m"), value = c(NaN, 365.07, 653.19, 980.72, 
1455.6), price = c(NaN, 158.18, 268.53, 331.81, 434.19)), class = 
"data.frame", row.names = c("0","1", "2", "3", "4"))

最新更新