>source

데이터 프레임을 "국가"를 기준으로 3 개의 다른 Excel 통합 문서로 내 보냈고 정확히 동일한 국가를 가진 다른 데이터 프레임이 있으며 내가 만든 현재 기존 통합 문서로 내보내고 싶습니다.

#Create Dataframe
df = data.frame(Year = c(2018,2019,2020,2018,2019,2020,2018,2019,2020),
                Country = c("Germany","Germany","Germany", "Japan", "Japan", "Japan",  "Thailand", "Thailand", "Thailand"), 
                Count = c(17, 15, 60, 23, 25, 60, 50, 18, 31))
df2 = data.frame(Country = c("Germany","Germany","Germany", "Japan", "Japan", "Japan",  "Thailand", "Thailand", "Thailand"), 
                Count = c("James", "Gordon", "Jackson", "Harrison", "Reid", "Ashen", "Lewis", "Maokai", "Federick"))
#Split dataframe according to their Countries
splitdf = split(df, df$Country)
#Write workbook
save_data <- function(df, name) {
  wb <- createWorkbook()
  addWorksheet(wb, name)
  writeDataTable(wb, name, df, tableStyle = "TableStyleLight9")
  saveWorkbook(wb, paste0(name, ".xlsx"), overwrite = TRUE)
}
#Print workbook
mapply(
  save_data,
  splitdf,
  names(splitdf)
)

원본 파일을 덮어 쓰지 않고 만든 기존 통합 문서에 고유 한 국가를 기반으로 새 시트에 df2를 추가하는 방법이 있습니까?

  • 답변 # 1

    이 시도:

    library(openxlsx)
    #Create lists
    L1 <- split(df,df$Country)
    L2 <- split(df2,df2$Country)
    #Write workbook
    save_data <- function(x,y, name) {
      wb <- createWorkbook()
      addWorksheet(wb, name)
      writeDataTable(wb, name,x , tableStyle = "TableStyleLight9")
      addWorksheet(wb, paste0(name,'.df2'))
      writeDataTable(wb, paste0(name,'.df2'), y,
                     tableStyle = "TableStyleLight9")
      saveWorkbook(wb, paste0(name, ".xlsx"), overwrite = TRUE)
    }
    #Print workbook
    mapply(
      save_data,
      x=L1,y=L2,name=names(L1)
    )
    
    

    일부 출력 :

관련 자료

  • 이전 javascript - swiperJS가있는 탭 슬라이더
  • 다음 python - PyQt5에서 무작위로 생성 된 여러 위젯 (QLabel, QPushButton 등)의 mousepress 이벤트의 부모 찾기