Скопируйте R data.frame в электронную таблицу Excel

У меня есть вопрос, который точно похож на этот question.

Как часть моей работы, мне нужно скопировать вывод из R Studio Console на рабочий лист excel, чтобы сделать графики excel. Однако в R Studio Console используется форматированный текст, который отлично не читается. Чтобы компенсировать, я всегда копирую из R Studio Console, вставляя в блокнот, а затем копируя в Excel. Таким образом, когда я вставляю таблицу, могу сказать excel, что на самом деле это фиксированные данные с разделителями ширины, а не только куча текста.

Как я могу скопировать вывод из консоли R Studio, чтобы он попал в буфер обмена как неформатированный текст, чтобы я мог вставить его непосредственно в Excel и таким образом упорядочить числа в разные ячейки? Это было бы очень полезно, поскольку мне не нравилось копировать/вставлять таблицы в блокнот, а затем делать графы.

Ответы

Ответ 1

Он работает с простым трюком.

Сначала вы должны визуализировать свои данные на панели Viewer Rstudio (вы можете использовать функцию View()), тогда вы должны начать выбирать из последнего значения в первое, это снизу вверх (см. изображение). Обратите внимание, что первая ячейка должна быть выбрана полностью. Наконец, щелкните правой кнопкой мыши по выбору, скопируйте и вставьте его в Excel по своему желанию с форматом или без него.

enter image description here

Удачи!

UPDATE:

на основе этого Сообщение, другой альтернативой является создание новой функции для копирования data.frame в Excel через clipboard:

write.excel <- function(x,row.names=FALSE,col.names=TRUE,...) {
  write.table(x,"clipboard",sep="\t",row.names=row.names,col.names=col.names,...)
}

write.excel(my.df)

и, наконец, Ctr + V в Excel:)

Ответ 2

Из моего опыта нет удобного способа, я использую два метода:

Для небольших фреймов данных используйте функцию RStudio View(data.frame), если вы копируете только данные без заголовков, она работает нормально, но если вы хотите скопировать с заголовками, вам нужно сначала вставить ее в блокнот, чтобы добавить хотя бы один символ в верхняя левая пустая ячейка.

Для больших фреймов данных используйте write.csv или write.xls (из пакета WriteXLS)

Ответ 3

Я обычно использую следующую функцию:

cb <- function(df, sep="\t", dec=",", max.size=(200*1000)){
    # Copy a data.frame to clipboard
    write.table(df, paste0("clipboard-", formatC(max.size, format="f", digits=0)), sep=sep, row.names=FALSE, dec=dec)
  }

Несколько примечаний:

  • Max.size позволяет указать, насколько большой может быть буфер обмена (в килобайтах) до его отмены, он установил ~ 200 МБ прямо сейчас.
  • Он отлично работает для копирования R-кадра данных из студийной студии R в Excel (с моей локалью в ЕС). Возможно, вам придется настроить разделитель/десятичные символы, чтобы он работал с версиями в США.

Как использовать:

df <- mtcars
cb(df)
# Paste in excel as 'values'