Я уже загружен 20 CSV файлов с функцией:Объединить несколько CSV-файлов в один - разное количество столбцов
tbl = list.files(pattern="*.csv")
for (i in 1:length(tbl)) assign(tbl[i], read.csv(tbl[i]))
или
list_of_data = lapply(tbl, read.csv)
Вот как это выглядит:
> head(tbl)
[1] "F1.csv" "F10_noS3.csv" "F11.csv" "F12.csv" "F12_noS7_S8.csv"
[6] "F13.csv"
Мне нужно объединить все эти файлы в один. Назовем его основным файлом, но давайте попробуем создать одну таблицу со всеми именами. Во всех этих файлах csv есть столбец «Присоединение». Я хотел бы сделать таблицу всех «имен» из всех этих файлов csv. Конечно, многие вхождения могут быть повторены в разных файлах csv. Я хотел бы сохранить все данные, соответствующие вступлению.
Некоторые проблемы:
- Некоторые из этих «имен» одни и те же, и я не хочу, чтобы дублировать их
- Некоторые из этих «имен» почти то же самое. Разница в том, что есть имя и после него становятся точкой и цифрой.
- Число столбцов может быть различным, это файлы csv.
Вот скриншот, показывающий, как эти данные выглядят следующим образом: http://imageshack.com/a/img811/7103/29hg.jpg
Позволь мне показать вам, как это выглядит:
AT3G26450.1 <--
AT5G44520.2
AT4G24770.1
AT2G37220.2
AT3G02520.1
AT5G05270.1
AT1G32060.1
AT3G52380.1
AT2G43910.2
AT2G19760.1
AT3G26450.2 <--
<--
= же образец, разные имена. Следует рассматривать как один. Поэтому просто игнорируйте точку и число после.
Это можно сделать?
Я не мог сделать dput(head)
, потому что это даже слишком большой набор данных.
Я пытался использовать такой код:
all_data = do.call(rbind, list_of_data)
Error in rbind(deparse.level, ...) :
The number of columns is not correct.
all_data$CleanedAccession = str_extract(all_data$Accession, "^[[:alnum:]]+")
all_data = subset(all_data, !duplicated(CleanedAccession))
Я пытался сделать это в течение почти 2 недель, и я не в состоянии. Пожалуйста, помогите мне.
'rbind.fill (list_of_data)' будет быстрее, 'dplyr :: rbind_all (list_of_data)' будет еще быстрее. – hadley
оба работают отлично и достаточно быстро. Любые идеи о том, как удалить дубликаты и «те же имена», просто отличаются числом после точки. Благодаря! Любые предложения, что я сделал неправильно, чтобы заслужить понижение? – Rechlay
Очень полезный ответ (и эффективный!). Спасибо. –