簡體   English   中英

從R到excel如何創建和導出大量表?

[英]How to create and export a large number of tables from R to excel?

我有一個包含 104 個變量的數據集。 我需要使用 freq() 為每個變量制作單向頻率表,並將 output 導出到 excel 表中。 這是我編寫的代碼,用於創建帶有頻率表的 104 數據框並將 output 發送到電子表格。

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"
)

這是一種方法。 但我使用 package writexl ,而不是 package 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM