source

data.frame 목록에서 개별 엑셀 워크시트 - R

ittop 2023. 7. 1. 10:01
반응형

data.frame 목록에서 개별 엑셀 워크시트 - R

저는 엑셀로 그들 자신의 워크시트에 출력하고 싶은 data.frame 목록을 가지고 있습니다.단일 데이터 프레임을 자체 Excel 파일에 쉽게 저장할 수 있지만 여러 데이터 프레임을 동일한 Excel 파일 내의 자체 워크시트에 저장하는 방법을 잘 모르겠습니다.

library(xlsx)
write.xlsx(sortedTable[1], "c:/mydata.xlsx")

각 리스트 요소의 시트 이름을 지정합니다.

library(xlsx)
file <- paste("usarrests.xlsx", sep = "")
write.xlsx(USArrests, file, sheetName = "Sheet1") 
write.xlsx(USArrests, file, sheetName = "Sheet2", append = TRUE)

@flodel이 제안한 두 번째 접근법은 다음과 같습니다.addDataFrame이것은 해당 함수의 도움말 페이지에 있는 다소의 예입니다.

file <- paste("usarrests.xlsx", sep="")
wb <- createWorkbook()
sheet1 <- createSheet(wb, sheetName = "Sheet1")
sheet2 <- createSheet(wb, sheetName = "Sheet2")

addDataFrame(USArrests, sheet = sheet1)
addDataFrame(USArrests * 2, sheet = sheet2)
saveWorkbook(wb, file = file)

data.frames 목록과 시트 이름 목록이 있다고 가정하면 쌍으로 사용할 수 있습니다.

wb <- createWorkbook()
datas <- list(USArrests, USArrests * 2)
sheetnames <- paste0("Sheet", seq_along(datas)) # or names(datas) if provided
sheets <- lapply(sheetnames, createSheet, wb = wb)
void <- Map(addDataFrame, datas, sheets)
saveWorkbook(wb, file = file)

openxlsx의 솔루션은 다음과 같습니다.

## create data;
dataframes <- split(iris, iris$Species)

# create workbook
wb <- createWorkbook()

#Iterate the same way as PavoDive, slightly different (creating an anonymous function inside Map())
Map(function(data, nameofsheet){     

    addWorksheet(wb, nameofsheet)
    writeData(wb, nameofsheet, data)

}, dataframes, names(dataframes))

## Save workbook to excel file 
saveWorkbook(wb, file = "file.xlsx", overwrite = TRUE)

그러나 openxlsx는 openxlsx::write 함수도 사용할 수 있습니다.이를 위해 xlsx를 사용하면 데이터 프레임 목록과 파일 경로를 객체에 지정할 수 있습니다. openxlsx는 xlsx 파일 내에 목록을 시트로 만들 수 있을 정도로 똑똑합니다.제가 Map()으로 게시하는 코드는 당신이 특정한 방식으로 시트를 포맷하고 싶은지 여부입니다.

다음 코드는 완벽하게 작동합니다. https://rpubs.com/gbganalyst/RdatatoExcelworkbook .

packages <- c("openxlsx", "readxl", "magrittr", "purrr", "ggplot2")

if (!require(install.load)) {
  install.packages("install.load")
}
install.load::install_load(packages)

list_of_mydata

write.xlsx(list_of_mydata, "Excel workbook.xlsx")

당신의 데이터 프레임 목록이 다음과 같이 불립니다.Lst저장할 워크북의 이름이 다음과 같습니다.wb.xlsx그런 다음 다음을 사용할 수 있습니다.

library(xlsx)
counter <- 1
for (i in length(Lst)){
   write.xlsx(x=Lst[[i]],file="wb.xlsx",sheetName=paste("sheet",counter,sep=""),append=T)
   counter <- counter + 1
}

G

저는 가장 간단한 해결책이 아직 부족하다고 생각합니다.사용writexl데이터 프레임 목록을 쉽게 작성할 수 있는 패키지:

list_of_dfs <- list(iris, iris)

writexl::write_xlsx(list_of_dfs, "output.xlsx")

또한 이름이 지정된 목록이 있으면 해당 이름이 시트 이름이 됩니다.

names(list_of_dfs) <- c("a", "b")

writexl::write_xlsx(list_of_dfs, "output.xlsx")

대신에,rio패키지를 사용하면 보다 많은 내보내기 제어가 가능하며 명명된 목록의 구문 및 처리도 유사합니다.

rio::export(list_of_dfs, "output.xlsx")

또한 자신의 워크북에도 쉽게 출력할 수 있습니다.

언급URL : https://stackoverflow.com/questions/27524472/list-of-data-frames-to-individual-excel-worksheets-r

반응형