#r
#r
Вопрос:
Я экспортировал свой фрейм данных в 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. Вы имеете в виду добавление дополнительного листа в каждую книгу с данными, поступающими из стран
df2
?2. @Duck да, я хотел бы добавить дополнительный лист в каждую книгу с данными из 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)
)
Некоторые результаты:
Комментарии:
1. Отлично, именно то, что мне было нужно! Приветствия
2. @realbeast91 Всегда рад помочь 🙂