Я бы предпочел сделать следующее в R, но открыт для (легко учиться) другим решениям.R - Объединение нескольких больших Dataframes (Collating)
У меня есть несколько (скажем 99) файлов с разделителями-табуляторами (давайте назовем их S1.txt через S99.txt) с таблицами, все с одинаковым форматом. Каждая таблица составляет ~ 2 000 000 колос на 5 строк. Вот пример игрушка:
ID Chr Position DP1 DP2
A1 1 123 1.5 2.0
A2 1 124 1.4 0.3
ID по определению является уникальным и всегда в том же порядке, Chr и Pos всегда в том же порядке. В каждом входном файле различаются только столбцы DP1 и DP2. Выходную таблицу, которую я хотел бы «сопоставить», я думаю, это слово. Вот пример вывода, если были ТОЛЬКО 3 примера входных файлов.
ID Chr Position S1.DP1 S1.DP2 S2.DP1 S2.DP2 S3.DP1 S3.DP2
A1 1 123 1.5 2.0 1.2 2.0 1.5 2.1
A2 1 124 1.4 0.3 1.0 0.5 0.5 0.05
Обратите внимание, что каждый входной файл имеет новый столбец, созданный для DP1 и DP2. ТАКЖЕ, имя столбцов является информативным (сообщает мне, какой файл ввода он пришел от &, который datapoint-DP).
Я нашел вопросы, когда столбцы различны: R: merging a lot of data.frames Я также знаю о слиянии, хотя я чувствую, что вы в конечном итоге со странными названиями колонок: How to join (merge) data frames (inner, outer, left, right)?
Мой другое решение было инициализировать фрейм данных, а затем загружать каждый файл и добавлять точки данных, но это будет использовать цикл и быть невероятно медленным и ужасным. Итак, мне нужно более элегантное решение. Спасибо за помощь.
Я получаю все образцы в один файл, чтобы отформатировать их для программы. Он требует, чтобы файлы были в том формате, который у меня был. Я беспокоился, что это слишком много для R, но не знаю другого способа сделать это. У меня была восходящая программа, создающая файл для образца, но теперь нужно собрать все вместе для последующей программы. –
Есть ли другой вариант для этого, относительно простой? Я не против изучать новые вещи, но также нужно сделать это для проекта. Благодарю. –
@GaiusAugustus Первое, что я хотел бы сделать, это попробовать один из предложенных подходов и посмотреть, работает ли он. Однако Unix будет вашим самым быстрым вариантом. Для этого используйте команду 'cut' для удаления уникальных идентификаторов (т. Е. ID, Chr, Position) из S2.txt в S99.txt. Затем «вставляйте» S1.txt через S99.txt. Unix будет не только быстрее, но и никогда не связан с памятью. –