使用 xlsx 编写 excel 文件的循环?
For loop for writing an excel file using xlsx?
我正在尝试为您在下面的数据中看到的 STR_NBR 编写个人 excel 电子表格
换句话说,我认为逻辑如下:
for (i in seq_along(STR_NBR)) {
openxlsx::write.xlsx("C:/Users/santi/Documents/R_Scripts/Export_Data_CSV.xlsx",
output_file = sprintf("STR_NBR%s.xlsx", STR_NBR[i])
}
基本上,我正在尝试为每个 STR_NBR
创建一个单独的电子表格
示例:假设我想为您在下面看到的每个 type 列打印一个电子表格。
set.seed(42) ## for sake of reproducibility
n <- 6
dat <- data.frame(id=1:n,
date=seq.Date(as.Date("2020-12-26"), as.Date("2020-12-31"), "day"),
group=rep(LETTERS[1:2], n/2),
age=sample(18:30, n, replace=TRUE),
type=factor(paste("type", 1:n)),
x=rnorm(n))
dat
# id date group age type x
# 1 1 2020-12-26 A 27 type 1 0.0356312
# 2 2 2020-12-27 B 19 type 2 1.3149588
# 3 3 2020-12-28 A 20 type 3 0.9781675
# 4 4 2020-12-29 B 26 type 4 0.8817912
# 5 5 2020-12-30 A 26 type 5 0.4822047
# 6 6 2020-12-31 B 28 type 6 0.9657529
更新我实际数据框中的数据:我正在尝试为每个 MVNDR 列打印一个新电子表格,但不是按每一行分组
Quote Date eSVS Order Nbr MVNDR
2021-05-24 H6328-206574 60710435
2021-05-27 H8926-157085 60710435
2021-05-24 H1020-178324 60660525
2021-05-24 H1020-178324 60660525
2021-05-27 H0772-64192 60074330
2021-05-27 H0772-64192 60074330
2021-05-27 H0772-64192 60074330
2021-05-25 H6646-240810 60063056
2021-05-25 H6646-240810 60063056
您可以使用 dplyr package to split the data and then use write.xlsx
from the xlsx 包中的 group_by
和 group_split
来创建 Excel 工作簿。
以下代码使用了您的示例数据,您应该能够根据实际数据进行调整。
library(dplyr)
library(xlsx)
set.seed(42) ## for sake of reproducibility
n <- 6
dat <- data.frame(id=1:n,
date=seq.Date(as.Date("2020-12-26"), as.Date("2020-12-31"), "day"),
group=rep(LETTERS[1:2], n/2),
age=sample(18:30, n, replace=TRUE),
type=factor(paste("type", 1:n)),
x=rnorm(n))
dat
# id date group age type x
# 1 1 2020-12-26 A 27 type 1 0.0356312
# 2 2 2020-12-27 B 19 type 2 1.3149588
# 3 3 2020-12-28 A 20 type 3 0.9781675
# 4 4 2020-12-29 B 26 type 4 0.8817912
# 5 5 2020-12-30 A 26 type 5 0.4822047
# 6 6 2020-12-31 B 28 type 6 0.9657529
dat_grouped <- dat %>% group_by(type)
lapply(group_split(dat_grouped), function(x){write.xlsx(x,paste0(x$type, ".xlsx"))})
我正在尝试为您在下面的数据中看到的 STR_NBR 编写个人 excel 电子表格
换句话说,我认为逻辑如下:
for (i in seq_along(STR_NBR)) {
openxlsx::write.xlsx("C:/Users/santi/Documents/R_Scripts/Export_Data_CSV.xlsx",
output_file = sprintf("STR_NBR%s.xlsx", STR_NBR[i])
}
基本上,我正在尝试为每个 STR_NBR
创建一个单独的电子表格示例:假设我想为您在下面看到的每个 type 列打印一个电子表格。
set.seed(42) ## for sake of reproducibility
n <- 6
dat <- data.frame(id=1:n,
date=seq.Date(as.Date("2020-12-26"), as.Date("2020-12-31"), "day"),
group=rep(LETTERS[1:2], n/2),
age=sample(18:30, n, replace=TRUE),
type=factor(paste("type", 1:n)),
x=rnorm(n))
dat
# id date group age type x
# 1 1 2020-12-26 A 27 type 1 0.0356312
# 2 2 2020-12-27 B 19 type 2 1.3149588
# 3 3 2020-12-28 A 20 type 3 0.9781675
# 4 4 2020-12-29 B 26 type 4 0.8817912
# 5 5 2020-12-30 A 26 type 5 0.4822047
# 6 6 2020-12-31 B 28 type 6 0.9657529
更新我实际数据框中的数据:我正在尝试为每个 MVNDR 列打印一个新电子表格,但不是按每一行分组
Quote Date eSVS Order Nbr MVNDR
2021-05-24 H6328-206574 60710435
2021-05-27 H8926-157085 60710435
2021-05-24 H1020-178324 60660525
2021-05-24 H1020-178324 60660525
2021-05-27 H0772-64192 60074330
2021-05-27 H0772-64192 60074330
2021-05-27 H0772-64192 60074330
2021-05-25 H6646-240810 60063056
2021-05-25 H6646-240810 60063056
您可以使用 dplyr package to split the data and then use write.xlsx
from the xlsx 包中的 group_by
和 group_split
来创建 Excel 工作簿。
以下代码使用了您的示例数据,您应该能够根据实际数据进行调整。
library(dplyr)
library(xlsx)
set.seed(42) ## for sake of reproducibility
n <- 6
dat <- data.frame(id=1:n,
date=seq.Date(as.Date("2020-12-26"), as.Date("2020-12-31"), "day"),
group=rep(LETTERS[1:2], n/2),
age=sample(18:30, n, replace=TRUE),
type=factor(paste("type", 1:n)),
x=rnorm(n))
dat
# id date group age type x
# 1 1 2020-12-26 A 27 type 1 0.0356312
# 2 2 2020-12-27 B 19 type 2 1.3149588
# 3 3 2020-12-28 A 20 type 3 0.9781675
# 4 4 2020-12-29 B 26 type 4 0.8817912
# 5 5 2020-12-30 A 26 type 5 0.4822047
# 6 6 2020-12-31 B 28 type 6 0.9657529
dat_grouped <- dat %>% group_by(type)
lapply(group_split(dat_grouped), function(x){write.xlsx(x,paste0(x$type, ".xlsx"))})