2012-02-27 29 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 2012-02-27 15:54:37

回答

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

沒有必要重複讀取每個子文件。將子數據放入列表中效率更高。我的回答包括使用應用樣式循環來讀取數據的一個例子。 – 2012-02-27 16:06:46

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