利用 R 批量转数据文件格式
楚新元 / 2021-09-03
这里仅以 .txt
文本文件转 .xlsx
格式的 Excel 文件为例,其它格式同理。直接给出代码如下,读者自行体验。
加载相关 R 包
library(dplyr)
library(purrr)
library(fs)
library(openxlsx)
library(rio)
批量生成测试文件
# 批量生成 txt 测试文件
xfun::dir_create("data")
dest_file = paste0("./data/", levels(iris$Species), ".txt")
iris %>%
group_split(Species) %>%
walk2(
., dest_file,
~ write.table(.x, .y, row.names = F)
)
也可以用如下代码批量生成测试文件
# 批量生成 txt 测试文件
xfun::dir_create("data")
iris %>%
group_nest(Species) %>%
mutate(
dest_file = paste0("./data/", Species, ".txt")
) %>%
pwalk(~ write.table(..2, ..3, row.names = F))
方法一:批量读取、汇总、分组、写入 Excel
# 批量读取 txt 文件并合并成一个数据框
dir_ls("./data", glob = "*.txt") %>%
map_dfr(
~ read.table(., header = TRUE),
.id = "src"
) %>%
mutate(src = gsub("./data/", "", src)) %>%
mutate(src = as.factor(src)) -> data
# 将数据框按照来源分组后分别写入 Excel 文件
xfun::dir_create("result")
data %>%
group_nest(src) %>%
mutate(
dest_file = paste0(
"./result/", gsub("txt", "xlsx", src)
)
) %>%
pwalk(~ write.xlsx(..2, ..3))
方法二:逐文件转换成 Excel 文件
dir_ls("./data", glob = "*.txt") %>%
walk(~ convert(.x, gsub("txt", "xlsx", .x)))
files = dir_ls("./data", glob = "*.xlsx")
file_move(files, gsub("data", "result", files))