Как создать цикл с openxslx и R?

У меня есть два фрейма данных. один - необработанные данные, другой - агрегированные.

Мои два фрейма данных - это варианты наборов данных радужной оболочки глаза (iris и iris_summary)

iris$ID <- 1:150

iris_summary <- iris %>% 
  group_by(Species) %>% 
  summarize(
    "Count of Species" = n(),
    "Average Sepal.Length" = mean(Sepal.Length),
    "Average Sepal.Width" = mean(Sepal.Width),
    "Average Petal.Length" = mean(Petal.Length),
    "Average Petal.Width" = mean(Petal.Width)
    )

Теперь у меня есть книга Excel, которую я хотел бы загрузить в свою среду, с предустановленным форматированием и 4 листами.

Лист 1: Лист с инструкциями 2: Сводная таблица Лист 3: Лист исходных данных 4: Контактная информация

Мне нужно создать 3 отдельных файла Excel для каждого вида (setosa, veriscolor и virginica).

В листе 2: мне нужно включить сводную статистику по каждому виду. Это пример статистики setosa в сводной таблице  введите описание изображения здесь

И в листе 3: мне нужно включить необработанные данные только сетоса.

введите описание изображения здесь

Листы 1 и 4 можно не трогать.

Как бы выглядела петля? Мне понадобится файл Excel - используя эту отформатированную рабочую книгу для всех 3 видов в наборе данных Iris. Мои фактические данные содержат около 30 категориальных переменных (по сравнению с 3 «видами» в наборах данных по радужной оболочке), и копирование и вставка их вручную займет часы.

Код обновления пробовал

wb <- loadWorkbook("Sample Workbook.xlsx")

for (i in iris$Species){
  print(i)
  FilterData <- iris %>% filter(Species == i) 
  filename <- paste0(i, "-data.xlsx")
  
  writeData(wb, sheet="Summary Table", i)
}


person RL_Pug    schedule 02.12.2020    source источник
comment
Не могли бы вы поделиться кодом того, что вы уже пробовали с точки зрения создания / обновления файла Excel?   -  person deschen    schedule 03.12.2020
comment
Возможный дубликат stackoverflow.com/q/34172353/680068?   -  person zx8754    schedule 03.12.2020
comment
@deschen Я не кодировал файл Excel, я просто сделал его в Excel.   -  person RL_Pug    schedule 03.12.2020
comment
@ zx8754, похоже, идет в правильном направлении, я могу загрузить файл Excel в свою среду, но я не уверен, как создать цикл, который позволит мне создать из него несколько файлов Excel нужным мне способом.   -  person RL_Pug    schedule 03.12.2020
comment
Используйте forloop, сохраните файл с другими именами. (не испытано)   -  person zx8754    schedule 03.12.2020
comment
@FruityPebblePug: Я не имел в виду, что вы сами кодировали файл Excel, меня просто интересовало, что вы уже пытались достичь, чтобы достичь желаемого результата? Итак, какой код R вы уже запускали из пакета openxlsx для получения выходных данных Excel?   -  person deschen    schedule 03.12.2020
comment
@deschen Плохо, я добавил код, который пытался использовать, но он неправильный. Я не могу понять, как указать, что мне нужно создать новый файл Excel для каждого вида.   -  person RL_Pug    schedule 03.12.2020
comment
@ zx8754 Ты хоть представляешь, как это будет работать?   -  person RL_Pug    schedule 03.12.2020


Ответы (1)


Я смог решить свой вопрос с помощью этого кода

#Code Works for sheet 2 & 3
for (i in iris_summary$Species){
  print(i)
  FilterData <- iris_summary %>% filter(Species == i) 
  FilterData2 <- iris %>% filter(Species == i)
  
  wb <- loadWorkbook("Sample Workbook.xlsx")
  
  writeData(wb, 2, FilterData)
  writeData(wb, 3, FilterData2)
  saveWorkbook(wb, file = paste0(i, "-data.xlsx"), overwrite = TRUE)
}


person RL_Pug    schedule 02.12.2020
comment
Отлично, именно то, что я имел в виду, извините, не смог опубликовать полный ответ. - person zx8754; 03.12.2020
comment
Я ценю это и не волнуюсь. Методом проб, ошибок и исследований, но я научился это делать. - person RL_Pug; 03.12.2020
comment
Хорошо, не стесняйтесь принимать свой собственный ответ, если вы все еще не ожидаете других решений. - person zx8754; 03.12.2020