【问题标题】:Iterating over large dataframe to write individual Excel spreadsheets迭代大型数据框以编写单独的 Excel 电子表格
【发布时间】:2021-08-24 15:14:40
【问题描述】:

我想根据您在下面看到的 MVNDR 编号编写独特的电子表格

当前数据结构/数据框

 Quote Date  eSVS Order Nbr  MVNDR     Name 
    2021-05-24  H6328-206574    60710435  Joe
    2021-05-27  H8926-157085    60710435  Joe 
    2021-05-24  H6328-206574    60710435  Carl
    2021-05-27  H8926-157085    60710435  Carl
    2021-05-24  H6328-206574    60710435 John
    2021-05-27  H8926-157085    60710435 John

独特电子表格中的所需输出

Spreadsheet1 & 所需路径名称:C:\Users\santi\Documents\R_Scripts\MVNDR_Joe

Quote Date  eSVS Order Nbr  MVNDR     Name 
2021-05-24  H6328-206574    60710435  Joe
2021-05-27  H8926-157085    60710435  Joe 

Spreadsheet2 & 所需路径名称:C:\Users\santi\Documents\R_Scripts\MVNDR_John

Quote Date  eSVS Order Nbr  MVNDR    Name 
2021-05-24  H6328-206574    60710435 John
2021-05-27  H8926-157085    60710435 John

Spreadsheet3 & 所需路径名称:C:\Users\santi\Documents\R_Scripts\MVNDR_Carl

Quote Date  eSVS Order Nbr  MVNDR    Name 
2021-05-24  H6328-206574    60710435  Carl
2021-05-27  H8926-157085    60710435  Carl

【问题讨论】:

  • 这是我的问题,但我觉得我问得不好,所以我想重新提出这个问题
  • 您现在要按名称分组吗?
  • 是的,我想按此分组,否则 MVNDR 也可以使用

标签: r excel loops for-loop apply


【解决方案1】:

我已经找到问题所在了,我应该早点发现的。

由于每个组现在有多个记录,x$Name 返回一个向量,每个记录的名称都重复。

我们只需要名字就可以很容易地提取出来。

这是更新后的代码。

library(dplyr)
library(xlsx)

dat <- read.csv('data.csv')

dat_grouped <- dat %>% group_by(Name)

lapply(group_split(dat_grouped), function(x){write.xlsx(x, paste0(x$Name[1], ".xlsx"))})

【讨论】:

  • 谢谢,如果我能想出一些我想像的小问题,我希望这能奏效。我收到此错误,这与我的机器有关吗? Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.OutOfMemoryError: Java heap space In addition: Warning message: Unknown or uninitialised column: MVNDR_NBR这是在运行lapply(group_split(dat_grouped), function(x){write.xlsx(x, paste0(x$MVNDR_NBR[1], ".xlsx"))})之后
  • 好像没有名为“MVNDR_NBR”的列,所以您首先应该检查已导入数据中的列名。
  • 啊,是的,这是问题的一部分。这是最终输出,我让它工作了! dat_grouped22 &lt;- d22_open_quotes %&gt;% group_by(MVNDR_NBR) #Logic to Print it Out lapply(group_split(dat_grouped22), function(x){openxlsx::write.xlsx(x, paste0(x$MVNDR_NBR[1], ".xlsx"))
猜你喜欢
  • 1970-01-01
  • 2017-08-09
  • 2011-10-17
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
相关资源
最近更新 更多