#r #excel #extract
#r #excel #извлечение
Вопрос:
У меня есть много файлов Excel в папке, которая имеет аналогичную структуру:
Я хотел бы вывести его на что-то вроде этого:
Это то, что я пробовал. Хотя я могу извлечь диапазон ячеек в B15: G17, как я могу добавить ячейку B8 в столбец? Кроме того, возможно ли использовать строку 10 в качестве заголовка столбца?
library("readxl")
file.list <- list.files(path=".", pattern=".xlsx")
df.list <- lapply(file.list, read_excel, sheet=1, range=("B15:G17"), col_names=FALSE, col_types = NULL)
df <- data.frame(df.list)
Комментарии:
1. Вы можете использовать
skip
аргумент, чтобы пропустить строки от 1 до 9
Ответ №1:
Параметр read.xlsx
from openxlsx
немного более гибкий, поскольку мы можем указать rows/cols
аргумент для чтения конкретной ячейки, а также использовать startRow
для указания начальной строки
library(openxlsx)
lst1 <- lapply(file.list, function(x) read.xlsx(x, sheet = 1, startRow = 10, cols = 3:6, rows = 15:17))
Кроме того, прочитайте конкретную ячейку отдельно, а затем привяжите ее как новый столбец ‘ID’ в каждом наборе list
данных с Map
помощью и cbind
lst2 <- lapply(file.list, function(x) setNames(read.xlsx(x, sheet = 1,
rows = 8, cols = 2), 'ID'))
Map(cbind, ID = lst2, lst1)
Комментарии:
1. такая работа, но как мне добавить содержимое в ячейку B8 в качестве нового столбца? И почему-то заголовок столбца не появился
2. @Jane Что касается имен столбцов, по умолчанию
colNames = TRUE
иIf TRUE, the first row of data will be used as column names
, поэтому, если строка имени столбца находится в 10-й строке, вы можете изменитьrows = 10:17
3. для имен столбцов я попробовал
colNames = TRUE
и даже включилfillMergedCells = TRUE
, но почему-то он не работает.4. Что касается части идентификатора, я столкнулся со следующей ошибкой для lst2
Error in names(object) <- nm : attempt to set an attribute on NULL In addition: Warning message: No data found on worksheet.
Вероятно, в некоторых файлах отсутствует идентификатор?5. @Джейн. Можете ли вы проверить
lapply(lst1, dim)
. Может быть, некоторые файлы не читаются?