Записать фрейм данных в файл.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")