2014-04-11 19 views
1

請幫助我,我有這樣的數據幀:在數據幀向量的排名要素

df <- data.frame(G1=c("a","b","c","d","e"), 
       G2=c("a","c","b","d","e"), 
       G3=c("a","d","e","b","c"), 
       G4=c("a","b","c","d","e")) 

,我想生產出從G1到G4每學期的位置的其他表,所以它可以是這樣的:

rank <- data.frame(term=c("a","b","c","d","e"), 
        G1=c(1:5), 
        G2=c(1,3,2,4,5), 
        G3=c(1,4,5,2,3), 
        G4=c(1:3,4,5)) 

第二個問題是存在於CONECT翻過表中的每個元件,比方說,爲「b」,箭頭從[2,1]將[3圖形化的方式, 2]至[4,3]至[2,4)

謝謝!

編輯:

我已經在我的原始數據框中應用了這些建議。這是它的一個例子:

df <- data.frame(G1=c("bta-let-7a-1","bta-let-7b", "bta-mir-26a-1", "bta-mir-21"), 
       G2=c("bta-mir-21", "bta-let-7a-1", "bta-let-7b", "bta-mir-26a-1"), 
       G3=c("bta-mir-26a-1", "bta-mir-21", "bta-let-7a-1", "bta-let-7b"), 
       G4=c("bta-let-7b","bta-mir-26a-1", "bta-mir-21", "bta-let-7a-1")) 

的問題是,當我lapply,列 「G1」 變爲 「1」, 「2」, 「4」, 「3」。

rank <- as.data.frame(lapply(df, as.integer)) 

然而,我有哪些 「G1」 爲 「1」, 「2」, 「3」, 「4」,而其餘的其他列根據 「G1」 安排。例如,「G2」是「4」,「1」,「2」,「3」。 (這得到這樣混亂在我原來的表)

+0

sapply(DF,as.numeric) – infominer

回答

0

既然你有因素​​已經,這是簡單的事:

as.data.frame(lapply(df, as.integer)) 
# G1 G2 G3 G4 
#1 1 1 1 1 
#2 2 3 4 2 
#3 3 2 5 3 
#4 4 4 2 4 
#5 5 5 3 5 

如果要重新排序的因素在編輯的OP,做到這一點的一種方式將是:

as.data.frame(lapply(lapply(df, function(x) 
        factor(as.character(x), as.character(df$G1))), as.integer)) 
+0

而對於第二部分,如果您加載'庫(MASS)'你可以做'parcoord(秩)'如果指定'等級< - 如.data.frame ...'按@eddi所示建議 –

+0

謝謝。我如何看到術語「a」,「b」,「c」,「d」,「e」? (在表格和圖表中? –

+0

@ Sergio.pv也許使用'levels(unlist(df))'?有點難說出提取信息的最佳方式是什麼(沒有足夠的信息給出) ,但它適用於OP。 – eddi