[英]Convert character month column into year-month format in R
给定一个 dataframe 如下:
Month Season Boys Girls
September Autumn 30132 28608
October Autumn 29985 28605
November Autumn 28701 27400
December Winter 28079 26634
January Winter 28758 27415
February Winter 24745 24047
March Spring 27848 26027
April Spring 27097 25542
May Spring 29190 27409
June Summer 28266 26702
如何将Month
列转换Year-month
格式,新的 dataframe 将如下所示:
Month Season Boys Girls
2018-09 Autumn 30132 28608
2018-10 Autumn 29985 28605
2018-11 Autumn 28701 27400
2018-12 Winter 28079 26634
2019-01 Winter 28758 27415
2019-02 Winter 24745 24047
2019-03 Spring 27848 26027
2019-04 Spring 27097 25542
2019-05 Spring 29190 27409
2019-06 Summer 28266 26702
谢谢。
取决于您的数据集有多少年。 两年使用match
与内置month.name
(取决于语言环境)和ISOdate
的解决方案:
m <- match(dat$Month, month.name)
dat <- transform(dat, Month=strftime(ISOdate(2018+((m - m[1]) < 0), m, 1), "%Y-%m"))
dat
# Month Season Boys Girls
# 1 2018-09 Autumn 30132 28608
# 2 2018-10 Autumn 29985 28605
# 3 2018-11 Autumn 28701 27400
# 4 2018-12 Winter 28079 26634
# 5 2019-01 Winter 28758 27415
# 6 2019-02 Winter 24745 24047
# 7 2019-03 Spring 27848 26027
# 8 2019-04 Spring 27097 25542
# 9 2019-05 Spring 29190 27409
# 10 2019-06 Summer 28266 26702
数据
dat <- read.table(text="Month Season Boys Girls
September Autumn 30132 28608
October Autumn 29985 28605
November Autumn 28701 27400
December Winter 28079 26634
January Winter 28758 27415
February Winter 24745 24047
March Spring 27848 26027
April Spring 27097 25542
May Spring 29190 27409
June Summer 28266 26702", header=TRUE)
由于没有年份信息,这只会为 dataframe 中的每一行生成一个新月份。 它确实产生了所请求的 output,但由于缺少信息,因此并不是非常具有编程性。
library(dplyr)
df %>%
mutate(Month = format(seq(
as.Date("2018/09/01"),
by = "month",
length.out = length(df$Month)
), "%Y-%m"))
Month Season Boys Girls
<chr> <chr> <dbl> <dbl>
1 2018-09 Autumn 30132 28608
2 2018-10 Autumn 29985 28605
3 2018-11 Autumn 28701 27400
4 2018-12 Winter 28079 26634
5 2019-01 Winter 28758 27415
6 2019-02 Winter 24745 24047
7 2019-03 Spring 27848 26027
8 2019-04 Spring 27097 25542
9 2019-05 Spring 29190 27409
10 2019-06 Summer 28266 26702
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.