合併數據我有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在正確的列中?
謝謝
安娜
合併數據我有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在正確的列中?
謝謝
安娜
假設你的列名是相同的,按你上面的例子:
TXT3 <- rbind(TXT1,TXT2)
write.table(TXT3,file="TXT3.txt")
一旦你在你的文件中讀取,使用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
沒有必要重複讀取每個子文件。將子數據放入列表中效率更高。我的回答包括使用應用樣式循環來讀取數據的一個例子。 – 2012-02-27 16:06:46
當我包括讀取數據時,我會解決你的問題是這樣的:
library(plyr)
large_table = ldply(list_src_files, read.table)
write.table(large_table, file = "large_table.txt")
這裏是一些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
是TXT1和TXT2'data.frames'?你需要知道他們來自各自的原始數據還是隻想將它們混合在一起? ?我會添加一個名爲每個'data.frame'的列,然後看一下'?rbind' – Justin 2012-02-27 15:54:37