如何使用 R 中列表中的特定列编写 Excel 文件

问题描述 投票:0回答:1

我有一个包含 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 文件中进行上传。

r excel list xlsx
1个回答
0
投票

我们可以使用

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 = ".")))
© www.soinside.com 2019 - 2024. All rights reserved.