【发布时间】:2022-01-22 09:50:05
【问题描述】:
我正在处理许多在括号中标有年份的 csv 文件。例如:
files_names <- list.files("data/", recursive = TRUE, full.names = TRUE)
[1] "data/BOC_All_ATMImage_(Aug 2020).txt" "data/BOC_All_ATMImage_(Aug 2021).txt"
[3] "data/BOC_All_ATMImage_(Feb 2021).txt" "data/BOC_All_ATMImage_(Feb_2020).txt"
[5] "data/BOC_All_ATMImage_(May 2021).txt" "data/BOC_All_ATMImage_(Nov 2019).txt"
column_names <- files_names %>%
str_extract(., "(?<=\\().*?(?=\\))") %>%
str_to_lower() %>%
str_replace(., " ", "_")
"aug_2020" "aug_2021" "feb_2021" "feb_2020" "may_2021" "nov_2019"
我正在使用purrr 中的map2 函数来处理csv 文件,并在循环中使用files_names 和column_names 设置列名。
data <-
map2(files_names, column_names,
~ read_csv(.x, guess_max = 50000) %>%
mutate(
day = 01,
month_year = str_extract(.x, "(?<=\\().*?(?=\\))"),
date_dmy = paste0(day, "-", month_year),
date = dmy(date_dmy),
"{.y}" := 1
),
.id = "group"
)
我需要弄清楚如何排列这个列表,以便每个数据集都按时间顺序排列。一种方法是在将初始字符向量(files_names 和column_names)输入循环之前对其进行排列。或者简单地排列data 列表以便数据帧按时间顺序排列可能更容易?我在每个数据框中创建了一个 date 变量,所以这可能是另一种方法,但我不确定如何按日期变量重新排序列表。
【问题讨论】: