2012-11-22 33 views
0

可以說我有這個文件(主)如何使用R更改文件的標題?

Name samp1 samp2 samp3 samp4 
pg1 0.43 0.32 0.21 0.54 
pg2 0.43 0.22 1.00 0.44 
pg3 0.11 0.99 0.78 0.54 
pg4 0.65 0.32 0.12 0.23 

我也有如下(映射器)這個頭文件

SampName ID 
samp1 TYC 
samp4 GDD 
samp6 DER 
samp2 JKK 
samp3 WER 
samp9 AXC 

我想更改使用我的「主」文件中的所有標題「MAPPERS」文件,這樣如果與sampleName匹配,則應該用樣本ID替換它。所以我期望有以下幾點:

Name TYC JKK WER GDD 
pg1 0.43 0.32 0.21 0.54 
pg2 0.43 0.22 1.00 0.44 
pg3 0.11 0.99 0.78 0.54 
pg4 0.65 0.32 0.12 0.23 

我有一個大文件,所以任何人都可以幫助我如何獲得上述?

+0

請使用'dput'發佈您的數據樣本,可能與'head'一起使您的問題[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-大-R重現-例子)。 –

回答

1

?match是你追我認爲該工具:

main <- read.table(textConnection("Name samp1 samp2 samp3 samp4 
pg1 0.43 0.32 0.21 0.54 
pg2 0.43 0.22 1.00 0.44 
pg3 0.11 0.99 0.78 0.54 
pg4 0.65 0.32 0.12 0.23"),header=TRUE,stringsAsFactors=FALSE) 

mapper <- read.table(textConnection("SampName ID 
samp1 TYC 
samp4 GDD 
samp6 DER 
samp2 JKK 
samp3 WER 
samp9 AXC"),header=TRUE,stringsAsFactors=FALSE) 


names(main)[2:5] <- mapper$ID[match(names(main)[2:5],mapper$SampName)] 
main 

    Name TYC JKK WER GDD 
1 pg1 0.43 0.32 0.21 0.54 
2 pg2 0.43 0.22 1.00 0.44 
3 pg3 0.11 0.99 0.78 0.54 
4 pg4 0.65 0.32 0.12 0.23 
0

下面是一個未經測試的例子。當你發佈數據時,我會測試它。

curnames <- data.frame(SampName=colnames(main)) 
colnames(main) <- merge(curnames,MAPPERS,all.x=TRUE)$ID 

如果您不確定每個SampName都與MAPPERS中的ID匹配,則需要更多代碼。