Как слить 100 csv файлов в 1 набор данных? Строки и номер столбца различны.Как слить 100 csv файлов в 1 набор данных в R? Строки и номер столбца различны
У меня есть много файлов csv. Каждый файл имеет разные столбцы и строки. Я пробовал много способов слияния, но я терпеть неудачу, как показано ниже. Не могли бы вы дать мне совет?
1St TRY.
files=list.files(pattern=".csv$")
files
mydata1=lapply(files, function(x) read.csv(x, stringsAsFactors = FALSE))
mydata2 <- function(x) {
x.diff <- setdiff(colnames(x), colnames(y))
y.diff <- setdiff(colnames(y), colnames(x))
x[, c(as.character(y.diff))] <- NA
y[, c(as.character(x.diff))] <- NA
return(mydata2)
}
merdata= merge(lapply(files, function(x) read.csv(x, stringsAsFactors = FALSE)), files, by=c("location","yearmon", "MME"), all=T)
## Ошибка в data.frame (список (yearmon = с ("1983-01", "1983-02", "1983-03",: аргументы подразумевают различающиеся число строк: 278 , 398
у меня есть 1253 CSV-файлы. Я хочу, чтобы эти файлы в один набор данных. же имя столбца каждого файла должно совпадать с именем, а не «x.column», как это Я приложил образец файла результатов. Вы можете легко понять, что я хочу сделать. Я покажу вам два примера файлов как рев. "dput (mydata1 [1: 2])" данные кодирования, приведенные ниже. Конечной целью является объединение 1253 файлов в один набор данных. Еще раз спасибо за вашу помощь.
.names = с ("yearmon", "E01", "E02", "E03", "E04", "E05", "E06", "E07", "E08", " «E10», «E10», «E11», «E12», «E13», «E14», «E15», «E16», «E17», «E18», «E19», «E20», «MME », "расположение"), класс = "data.frame", row.names = с (NA, -398L)),
.names = с ("yearmon", "E01", "E02" , «E03», «E04», «E05», «E06», «E07», «E08», «E09», «E10», «MME», «location»), class = "data.frame" , row.names = c (NA, -278L )))
#Sample Result iefile_1 [iefile_2]
Храните все файлы в формате CSV как список - вывод lapply части кода, а затем использовать сливать в цикле. – zx8754
Возможно, слияние - это не то, что вам действительно нужно. Это приведет к получению итогового 'data.frame' с тысячами столбцов, если он завершится успешно, что совсем не удобно для работы. Кроме того, я сомневаюсь, что он будет работать здесь: ваши 'data.frame' имеют общие столбцы (например, 'E01' и' E02'), которые содержат разные числа (не являются общими) и 'merge', что на самом деле делает' INNER JOIN 'будет производить пустую таблицу. Я предлагаю вам сначала изменить ваши таблицы в 'mydata1' на 5-столбцовое представление (смотрите функцию' gather' из пакета 'tidyr'), а затем привяжите их вместе с' bind_rows' от 'dplyr' – inscaven
Спасибо за ваш добрый ответ. На самом деле, я только начал изучать R в эти дни.Мне, возможно, придется много учиться. В этот момент я не могу следовать твоему совету из-за моего короткого понимания. Извини за это. Если вы не возражаете, можете ли вы попробовать, как это сделать? Позвольте мне предоставить вам файлы данных. Благодарю. –