r-分析两年一次的时间变量



在使用read_csv读取数据帧时,我想从数据帧中解析一个两年一次的时间变量。

两年一度的时间变量的格式为Year-B1Year-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"))) 

最新更新