2014-02-23 123 views
1

我有以下數據幀更新基於的另一個

GenA<-rep(c("C/C","A/C"),5) 
GenB<-rep(c("G/G","G/C"),5) 
GenC<-rep(c("A/A","A/T","A/A","A/T","A/A"),2) 
Treatment<-rep(c("A","B"),5) 
e<-data.frame(GenA,GenB,GenC,Treatment) 

隨着,我想以計算在該頻率某些基因存在於給定的治療事件一列。所以,我做的:

e$MutA<-ifelse(!(e$GenA=="C/C"),"MutA","") 
e$MutB<-ifelse(!(e$GenB=="G/G"),"MutB","") 
e$MutC<-ifelse(!(e$GenC=="A/A"),"MutC","") 


e$summary<-paste(e$MutA,e$MutB,e$MutC,sep=",") 
round(prop.table(ftable(e$summary,e$Treatment),2),digits=2) 

它可以給我我想要的值:

    A B 

,,    0.6 0.0 
MutA,MutB,  0.0 0.6 
MutA,MutB,MutC 0.0 0.4 
,,MutC   0.4 0.0 

現在我想包括通過xtable乳膠文檔中,因此需要改變rownames排除任何逗號在一個詞的開始。理想情況下,輸出將類似於:

    A B 

no Mut   0.6 0.0 
MutA,MutB,  0.0 0.6 
MutA,MutB,MutC 0.0 0.4 
MutC   0.4 0.0 

我不想使用rownames命令,因爲我的基礎數據集是不斷變化的,每週都增加了很多行。此外,我有更多的專欄比張貼在這裏。所以我正在尋找另一種實現這一結果的方式。你有什麼想法?

回答

0

這個怎麼樣?

tab <- prop.table(ftable(e$summary,e$Treatment),2) 
# remove leading commas using a regular expression 
attr(tab,'row.vars')[[1]] <- sub('^,+','',attr(tab,'row.vars')[[1]]) 
# replace entries with no mutations with 'no Mut' 
attr(tab,'row.vars')[[1]][attr(tab,'row.vars')[[1]]==''] <- 'no Mut' 
+0

這幾乎可行,但對於我的一些列,逗號顯示爲最後一個字符。我如何刪除它?我試過:attr(tab,'row.vars')[[1]] < - sub('$,+','',attr(tab,'row.vars')[[1]])不工作 – user2386786

+0

RegEx應該是'',+ $''而不是(即一個或多個逗號後跟字符串的結尾)。您還應該能夠用'',+ |,+ $''替換我的代碼中的RegEx,以便一次完成此操作。 – RoyalTS

+0

非常感謝! – user2386786