我有一个包含 150 个不同 DF 的列表,其格式与下面的示例表完全相同:
Date/Time Depth Pressure
2022-01-09 65 70
2022-08-09 65 NA
2023-01-09 65 68
2023-08-09 65 69
列表中每个单独的 DF 均以收集数据的位置为标题(即 A 井、B 井等......)。我需要将每个 DF 放入自己单独的 excel 文件中,并将其 DF 名称用作 excel 文件的名称。
但是,为了完成此任务,我需要创建具有一组特定列/列名称的 Excel 文件。有 30 列,其中我需要创建一个包含日期/时间值的“日期时间”列、一个包含深度值的“深度”列和一个包含压力值的“压力”列。其余部分将保留为空,以便正确上传到我们的数据库。
我使用的 openworkbook() 和 write.xlsx() 容量非常有限,但根据我的记忆,他们只是将 DF 复制到 Excel 文件中并手动保存。
我无法找到示例或类似问题来解决此问题。非常感谢任何帮助!
我正在尝试创建一个脚本,它可以获取单个 excel 文件,将其放入 DF 列表中,清理这些 DF,然后将它们导出到单独的 excel 文件中进行上传。
我们可以使用
lapply()
或 purrr::map()
来迭代列表。 purrr
有
map()
命令的变体在这里很有用。 imap()
使用
列表的名称作为第二个参数。 iwalk()
在这里很完美,因为它
使函数的输出静音。
对于空列,我们可以使用
add_column()
提供带有空字符向量的列名称 ""
。
library(tidyverse)
# Creating your data
df1 <-
tibble::tribble(
~"Date/Time", ~Depth, ~Pressure,
"2022-01-09", 65, 70,
"2022-08-09", 65, NA,
"2023-01-09", 65, 68,
"2023-08-09", 65, 69)
# Creating dataframe with data for different well locations
all_wells <-
list("Well A" = df1,
"Well B" = df1,
"Well C" = df1) |>
bind_rows(.id = "location") |>
add_column(empty_col1 = "",
empty_col2 = "")
# split dataframe by location and write into separate excel files
all_wells |>
split(all_wells$location) |>
iwalk(\(x, i) writexl::write_xlsx(x, paste(i, "xlsx", sep = ".")))