在使用read_csv
读取数据帧时,我想从数据帧中解析一个两年一次的时间变量。
两年一度的时间变量的格式为Year-B1
和Year-B2
。这里有一个小例子,说明我的数据是什么样子的,以及我想做什么
#example
#creating some tibble to demonstrate how my data looks like:
library(tidyverse)
tb <- tibble (time = c("2021-B1","2021-B2","2022-B1","2022-B2"),
country = rep("USA",4),
value = c(3,5,4,7)
)
> tb
# A tibble: 4 × 3
time country value
<chr> <chr> <dbl>
1 2021-B1 USA 3
2 2021-B2 USA 5
3 2022-B1 USA 4
4 2022-B2 USA 7
#saving the tibble as csv file
write_csv(tb, "tb.csv")
现在我的计划是读取csv文件并指定列;但我不知道如何指定col_date()
tb_r <- read_csv("tb.csv", col_types = cols( time= col_date(format= "%Y-%B"),
country = col_character(),
value = col_double() ))
理想情况下,我希望B1年的时间变量显示为年:六月,B2年的时间可变显示为年12月。
我们可以用您想要的月份替换:B1
和:B2
。
tb %>%
mutate(time_stamp = str_replace_all(time, c(":B1" = ":Jun", ":B2" = ":Dec")))
# # A tibble: 4 x 4
# time country value time_stamp
# <chr> <chr> <dbl> <chr>
# 1 2021:B1 USA 3 2021:Jun
# 2 2021:B2 USA 5 2021:Dec
# 3 2022:B1 USA 4 2022:Jun
# 4 2022:B2 USA 7 2022:Dec
数据的结构化方式没有内置格式。所以你需要对它进行后处理。不过,它可以在一个管道中完成;
tb_r <- read_csv("tb.csv", col_types = cols( time= col_character(),
country = col_character(),
value = col_double() )) %>%
mutate(time = str_replace_all(time, c(":B1" = ":Jun", ":B2" = ":Dec")))