[英]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.