Записать фрейм данных в файл.xls с заголовком

Я адаптировал скрипт для запуска множественных (post-hoc) сравнений dunn.test функция от dunn.test пакет с несколькими переменными, генерирующий несколько фреймов данных, сохраненный с помощью приведенного ниже (упрощенного) кода в файле.xls в виде отдельных таблиц. Я хочу сохранить с каждым фреймом даты также имя анализируемой переменной (столбца) в виде заголовков таблицы (не заголовков столбцов). Я ищу решение в течение нескольких часов, но безуспешно. Как это сделать? Их слишком много, и я не хочу вводить их вручную.

wb <- createWorkbook()
sheet <- createSheet(wb, sheetName="Sheet1")
# start analyzing data in a for loop here
# and add created data frames to a sheet
    addDataFrame(mydataframe, sheet)
# end loop here
saveWorkbook(wb, "myfile.xls", sep="")

2 ответа

Решение

Вы можете преобразовать исходный файл data.frame в текстовую матрицу, добавить префикс к любому заголовку и записать его в файл.

Например, учитывая этот data.frame:

dat <- data.frame(Fruit=c('Apple', 'Banana'), 
                  Quantity=1:2, 
                  Notes=c('Hello', 'Some Text'))

Вы можете использовать такую ​​функцию:

text_matrix <- function(dat, table_title) {

  rbind(c(table_title, rep('', ncol(dat)-1)), # title
        rep('', ncol(dat)), # blank spacer row
        names(dat), # column names
        unname(sapply(dat, as.character))) # data

}

Затем вы можете вызвать функцию и записать вывод в файл (используя write.table или один из пакетов преобразования xls, если необходимо).

temp <- text_matrix(dat, table_title='Here is a table title')
write.table(temp, 'temp.csv', row.names=F, col.names=F, sep=',')

Результат, открытый в Excel, таков:

Надеюсь, что следующее поможет. Я быстро создал пример набора данных. Output.csv можно найти в вашем домашнем каталоге. Открытие его в Excell покажет названия столбцов.

n = 20
set.seed(12345)
data = data.frame(cbind(pond=1:2, habitat=1:3, value = rnorm(n)))

write.csv(data, file="output.csv")
Другие вопросы по тегам