如何创建大量表格并将其从 R 导出到 excel?
How to create and export a large number of tables from R to excel?
我有一个包含 104 个变量的数据集。我需要使用 freq() 为每个变量制作一种方式 frequencie tables 并将输出导出为 excel sheet。这是我编写的代码,用于创建频率为 table 的 104 数据帧并将输出发送到传播 sheet.
X1 <- c(1,2,3,1,2,3)
X2 <- c(1,2,3,1,2,3)
X3 <- c(1,2,3,1,2,3)
d <- data.frame(X1,X2,X3)
#Step 1 : Create 104 data frames
df1 <- as.data.frame(freq(d$X1))
df1 <- df1 %>% tibble::rownames_to_column("Modalités") %>% select(-4)
df2 <- as.data.frame(freq(d$X2))
df2 <- df2 %>% tibble::rownames_to_column("Modalités") %>% select(-4)
etc...
#Step 2 : define sheet names for each data frame
dataset_names <- list('Sheet1' = df1, 'Sheet2' = df2)
#Step 3: export each data frame to separate sheets in same Excel file
openxlsx::write.xlsx(dataset_names, file = 'output/mydata.xlsx')
问题是有 104 个变量,第 1 步很长:我必须写 104 次创建数据框的 2 行代码(df1、df2、... dfi...、df104)。
有没有办法提高 R 的效率(也许使用循环?)。
您可以按如下方式进行(将 n 设置为 104 以获得完整的解决方案)
n=3
openxlsx::write.xlsx(
setNames(
lapply(1:n,\(x) {
d <- tibble::rownames_to_column(as.data.frame(freq(d[[x]])), "Modalités") %>% select(-4)
}), paste0("Sheet",1:n)),
file="mydata.xlsx"
)
这是一个方法。但我使用包 writexl
,而不是包 openxlsx
.
请注意,工作表名称将是列名称。
suppressPackageStartupMessages({
library(tidyverse)
library(questionr)
})
X1 <- c(1,2,3,1,2,3)
X2 <- c(1,2,3,1,2,3)
X3 <- c(1,2,3,1,2,3)
d <- data.frame(X1,X2,X3)
outfile <- "~/Temp/mydata.xlsx"
#Steps 1, 2 and 3
lapply(d, freq) %>%
map(\(x) as.data.frame(x) %>% tibble::rownames_to_column("Modalités") %>% select(-4)) %>%
writexl::write_xlsx(path = outfile)
由 reprex package (v2.0.1)
于 2022-04-24 创建
我有一个包含 104 个变量的数据集。我需要使用 freq() 为每个变量制作一种方式 frequencie tables 并将输出导出为 excel sheet。这是我编写的代码,用于创建频率为 table 的 104 数据帧并将输出发送到传播 sheet.
X1 <- c(1,2,3,1,2,3)
X2 <- c(1,2,3,1,2,3)
X3 <- c(1,2,3,1,2,3)
d <- data.frame(X1,X2,X3)
#Step 1 : Create 104 data frames
df1 <- as.data.frame(freq(d$X1))
df1 <- df1 %>% tibble::rownames_to_column("Modalités") %>% select(-4)
df2 <- as.data.frame(freq(d$X2))
df2 <- df2 %>% tibble::rownames_to_column("Modalités") %>% select(-4)
etc...
#Step 2 : define sheet names for each data frame
dataset_names <- list('Sheet1' = df1, 'Sheet2' = df2)
#Step 3: export each data frame to separate sheets in same Excel file
openxlsx::write.xlsx(dataset_names, file = 'output/mydata.xlsx')
问题是有 104 个变量,第 1 步很长:我必须写 104 次创建数据框的 2 行代码(df1、df2、... dfi...、df104)。
有没有办法提高 R 的效率(也许使用循环?)。
您可以按如下方式进行(将 n 设置为 104 以获得完整的解决方案)
n=3
openxlsx::write.xlsx(
setNames(
lapply(1:n,\(x) {
d <- tibble::rownames_to_column(as.data.frame(freq(d[[x]])), "Modalités") %>% select(-4)
}), paste0("Sheet",1:n)),
file="mydata.xlsx"
)
这是一个方法。但我使用包 writexl
,而不是包 openxlsx
.
请注意,工作表名称将是列名称。
suppressPackageStartupMessages({
library(tidyverse)
library(questionr)
})
X1 <- c(1,2,3,1,2,3)
X2 <- c(1,2,3,1,2,3)
X3 <- c(1,2,3,1,2,3)
d <- data.frame(X1,X2,X3)
outfile <- "~/Temp/mydata.xlsx"
#Steps 1, 2 and 3
lapply(d, freq) %>%
map(\(x) as.data.frame(x) %>% tibble::rownames_to_column("Modalités") %>% select(-4)) %>%
writexl::write_xlsx(path = outfile)
由 reprex package (v2.0.1)
于 2022-04-24 创建