2012-02-27 2 views
1

У меня есть 20 различных TXT, которые все имеют одинаковые столбцы с одинаковыми именами, но разные значения напримерОбъединить данные из разных TXT

TXT1 
a b c d 
1 4 5 6 
3 4 5 3 

TXT2 
a b c d 
2 4 8 6 
3 5 2 9 

как я могу создать новый TXT, который будет иметь все значения как TXT1, так и TXT2 в правильной колонке?

спасибо

Анна

+0

являются txt1 и txt2 'data.frames'? Вам нужно знать, что они из соответствующих исходных данных или просто хотят смять их вместе? ? Я бы добавил столбец с именем каждого 'data.frame', а затем посмотрел на'? Rbind' – Justin

ответ

1

Если предположить, что имена столбцов идентичны, по вашему выше примере:

TXT3 <- rbind(TXT1,TXT2) 
    write.table(TXT3,file="TXT3.txt") 
0

После того, как вы читаете в файлах, используйте rbind().

Пример:

dat.in.1 <- read.delim(dat.1) 
dat.in.2 <- read.delim(dat.2) 
dat.in.3 <- read.delim(dat.3) 
dat.in.4 <- read.delim(dat.4) 
dat.in.5 <- read.delim(dat.5) 

dat.total <- rbind(dat.in.1, dat.in.2, dat.in.3, dat.in.4, dat.in.5) 

Вы также должны дать этому вид: R Data Import/Export Manual

+0

Нет необходимости повторять чтение для каждого подфайла. Помещение субданных в список намного эффективнее. Мой ответ включает пример использования цикла стиля приложения для чтения данных. –

2

Когда я включаю чтение данных, я бы решить вашу проблему, как это:

library(plyr) 
large_table = ldply(list_src_files, read.table) 
write.table(large_table, file = "large_table.txt") 
2

Здесь является некоторой магией R, чтобы сделать вашу жизнь очень легкой:

Создать некоторые данные в формате вы описали:

TXT1 <- data.frame(a = 1:4,b = 5:8,c = 9:12) 
TXT2 <- data.frame(a = 11:14,b = 15:18,c = 19:22) 
TXT3 <- data.frame(a = 21:24,b = 25:28,c = 29:32) 
TXT4 <- data.frame(a = 31:34,b = 35:38,c = 39:42) 

Стич это вместе:

x <- ls(pattern = "TXT[[:digit:]]", all.names=TRUE) 
do.call(rbind, lapply(x, get)) 

Результаты:

a b c 
1 1 5 9 
2 2 6 10 
3 3 7 11 
4 4 8 12 
5 11 15 19 
6 12 16 20 
7 13 17 21 
8 14 18 22 
9 21 25 29 
10 22 26 30 
11 23 27 31 
12 24 28 32 
13 31 35 39 
14 32 36 40 
15 33 37 41 
16 34 38 42 
Смежные вопросы