Как я могу расположить различные кадры данных в R (один под другим), не заботясь о соответствии параметров? - PullRequest
1 голос
/ 07 апреля 2020

У меня есть разные файлы Excel, которые я хочу, чтобы они были расположены определенным образом: данные соответствуют различным параметрам оборудования, поэтому каждый файл Excel содержит строки с данными, относящимися к записям в день в месяц, что означает, что каждая строка данных имеет данные за день в этом месяце (дата в первом столбце для всех записей), затем каждый файл имеет, например, 31 строку для января, 28 для февраля и так далее. Дело в том, что это отдельные файлы, и я хочу создать один фрейм данных, в котором все данные расположены в одном и том же порядке (с января по декабрь, учитывая каждую дату дня), один набор данных под следующим набором данные. Я попытался сделать следующее.

Получить список для каждого файла данных

tojoin = lapply(mis_archivos, function(i){
  x=read_excel(i, sheet = 1)
  x$file = i
  x
})

, затем я попытался объединить список в кадре данных с этим

join = do.call("rbind.data.frame", tojoin)'

И я получаю такие сообщения

Error in rbind.data.frame(list(Date = c(1388534400, 1388620800, 1388707200,  : 
  numbers of columns of arguments do not match

Даже если я попытаюсь напрямую преобразовать фрейм данных, я получу эту

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 31, 28

надежду, что она достаточно ясна. Пожалуйста помоги!!

1 Ответ

2 голосов
/ 07 апреля 2020

rbind работает, только если размеры и имена столбцов совпадают. Здесь мы можем использовать bind_rows

library(dplyr)
bind_rows(tojoin, .id = 'file')

или с rbindlist

library(data.table)
rbindlist(tojoin, idcol = 'file') 
...