如何在 R 数据框列中从 6 位数字中分割月份和年份?
有时我们得到的数据并不适合进行分析,其中一种情况是将日期存储为 6 位数字,例如 202105,它表示 2021 年的第五个月,而不是 2021/05 的日期格式。因此,我们需要分割日期并从数字中提取月份和年份。借助转换函数,可以轻松完成此操作,如下面的示例所示。
示例 1
考虑以下数据框 -
> Date<-sample(c(202101,202102,202103),20,replace=TRUE) > Response1<-rnorm(20) > df1<-data.frame(Date,Response1) > df1
输出
Date Response1 1 202103 0.946367628 2 202103 1.241718518 3 202101 -0.657920816 4 202103 -0.809622853 5 202102 -1.996697735 6 202103 -0.008161429 7 202103 -1.076252898 8 202103 1.677882433 9 202102 1.172454683 10 202102 0.150296104 11 202101 -0.084385416 12 202101 -1.448539196 13 202101 1.264693614 14 202101 0.256453476 15 202103 -0.466133896 16 202103 -0.469300432 17 202103 0.724691974 18 202101 0.663945007 19 202103 0.156898247 20 202103 0.364965504
从 df1 中的日期创建月份和年份的列 -
> transform(df1,Month=substr(Date,5,6),Year=substr(Date,1,4))
输出
Date Response1 Month Year 1 202103 0.946367628 03 2021 2 202103 1.241718518 03 2021 3 202101 -0.657920816 01 2021 4 202103 -0.809622853 03 2021 5 202102 -1.996697735 02 2021 6 202103 -0.008161429 03 2021 7 202103 -1.076252898 03 2021 8 202103 1.677882433 03 2021 9 202102 1.172454683 02 2021 10 202102 0.150296104 02 2021 11 202101 -0.084385416 01 2021 12 202101 -1.448539196 01 2021 13 202101 1.264693614 01 2021 14 202101 0.256453476 01 2021 15 202103 -0.466133896 03 2021 16 202103 -0.469300432 03 2021 17 202103 0.724691974 03 2021 18 202101 0.663945007 01 2021 19 202103 0.156898247 03 2021 20 202103 0.364965504 03 2021
示例 2
> Date<-sample(c(202010,202011,202012),20,replace=TRUE) > Rate<-rpois(20,10) > df2<-data.frame(Date,Rate) > df2
输出
Date Rate 1 202011 9 2 202010 14 3 202011 13 4 202012 16 5 202012 10 6 202012 8 7 202012 3 8 202011 20 9 202010 9 10 202011 13 11 202010 12 12 202011 14 13 202012 10 14 202011 15 15 202011 11 16 202011 5 17 202011 15 18 202010 15 19 202011 12 20 202012 5
从 df2 中的日期创建月份和年份的列 -
> transform(df2,Year=substr(Date,1,4),Month=substr(Date,5,6))
输出
Date Rate Year Month 1 202011 9 2020 11 2 202010 14 2020 10 3 202011 13 2020 11 4 202012 16 2020 12 5 202012 10 2020 12 6 202012 8 2020 12 7 202012 3 2020 12 8 202011 20 2020 11 9 202010 9 2020 10 10 202011 13 2020 11 11 202010 12 2020 10 12 202011 14 2020 11 13 202012 10 2020 12 14 202011 15 2020 11 15 202011 11 2020 11 16 202011 5 2020 11 17 202011 15 2020 11 18 202010 15 2020 10 19 202011 12 2020 11 20 202012 5 2020 12
广告