Экспорт нескольких фреймов данных R на один лист Excel

Я хотел бы экспортировать несколько фреймов данных из R в один лист Excel. Используя следующий код:

write.xlsx(DF1, file="C:\\Users\\Desktop\\filename.xlsx", sheetName="sheet1", 
       col.names=TRUE, row.names=TRUE, append=FALSE)

write.xlsx(DF2, file="C:\\Users\\Desktop\\filename.xlsx", sheetName="sheet2", 
       col.names=TRUE, row.names=TRUE, append=TRUE)

Я могу экспортировать два фрейма данных в одну книгу Excel, но на двух отдельных листах. Я хотел бы экспортировать их на одном листе и, если возможно, определить конкретные ячейки, в которые будут помещены эти фреймы данных.

Любые предложения более чем приветствуются.


person Ioannis    schedule 10.10.2017    source источник
comment
Как выглядят DF1 и DF2? Если у них одинаковые столбцы, вы можете rbind(DF1, DF2) а затем экспортировать их, если у них одинаковые строки, вы можете cbind(DF1, DF2) а затем экспортировать.   -  person slackline    schedule 10.10.2017
comment
@Hackerman Ошибка в .jcall(wb, Lorg/apache/poi/ss/usermodel/Sheet;, createSheet,: java.lang.IllegalArgumentException: рабочая книга уже содержит лист с таким именем   -  person Andre Elrico    schedule 10.10.2017
comment
@slackline cbind работает, но результат не совсем то, что я хочу. У меня есть две таблицы, равные количеству или строкам (одна и та же переменная группировки) и разное количество столбцов. И я хотел бы, чтобы они появлялись рядом друг с другом, но с некоторым пространством (несколько столбцов) между ними.   -  person Ioannis    schedule 10.10.2017
comment
@Hackerman, к сожалению, Андре Элрико прав. Я попробовал то же самое, что вы предложили, прежде чем написать этот пост, но это невозможно.   -  person Ioannis    schedule 10.10.2017
comment
@Ioannis Добавьте пустые столбцы в таблицу, которая должна быть слева перед вами cbind(DF1, DF2), что-то вроде DF1$dummy <- "".   -  person slackline    schedule 16.11.2017


Ответы (3)


Это не готовый к использованию ответ, но он должен привести вас к вашей цели. Было бы глупо написать это в комментарии.

  1. Создайте комбинированный df с помощью инструментов R
  2. Написать дф в эксель

несколько замечаний к пункту 1.:

вертикальное смещение второго df от первого, используя Reduce(rbind,c(list(mtcars),rep(list(NA),3))) для смещения на 3 ячейки, например.

rbind имена столбцов к вашему df rbind(names(mtcars),mtcars)

используйте числа в качестве имен столбцов, чтобы у вас не было проблем с связыванием разных df с разными переменными. names(mtcars) <- seq_along(mtcars)

К пункту 2.:

Поскольку ваши имена столбцов теперь являются числами, убедитесь, что ваши имена столбцов установлены как FALSE.

Надеюсь, это поможет, и вы сможете получить желаемый результат.

person Andre Elrico    schedule 10.10.2017

Следуя большинству ваших предложений, я понял, что с помощью cbind.data.frame я получаю неоптимальный результат, но количество времени, которое мне нужно для реструктуризации данных в EXCEL, действительно незначительно. Итак, я пока продолжу это.

Спасибо

person Ioannis    schedule 10.10.2017

Я пока не могу комментировать, поэтому напишу здесь:

Использование write.xlsx в R, как писать в определенной строке или столбце в файле Excel

В этой ссылке предлагается организовать ваши данные в одном фрейме данных, чтобы затем записать это в лист Excel. Вы должны взглянуть на это.

как предложил слэклайн, это довольно просто, если ваши столбцы или строки одинаковы, используя предложенные им методы.

Изменить: чтобы добавить пробелы между ними, просто вставьте пустые столбцы между ними перед записью

person Smicman    schedule 10.10.2017