2014-02-19 23 views
1

我困住了一個問題。如何獲取r中不同參數的行列值?

我有數據集

v1 v2 v3 v4 
VL M H M 
M H L L 
M M M H 
VH H H VL 

列名是V1 V2 V3的每一行的值將與五個參數發生變化。 M中,L低,VL非常低,VH非常高,H高。

我想要更高的列和行值。這意味着如果第一行中的M計數較高,則第一行較高的值是M.如果行具有兩個較高的值,則將兩者都取爲較高的值。與列相同的方式。如果全部具有相同的計數,請選擇全部爲更高。

輸出:
行更高的價值

A B 
1 M 
2 L 
3 M 
4 H 

cloumn更高的價值

A B 
V1 M 
V2 M,H 
V3 H 
V4 M,L,H,VL 

回答

2

這看起來有效:

ff = function(x) { 
    tab = table(x) 
    paste0(names(tab)[which(tab == max(tab))], collapse = ", ") 
} 
apply(DF, 2, ff) #for columns 
#   v1   v2   v3   v4 
#   "M"  "H, M"   "H" "H, L, M, VL" 
apply(DF, 1, ff) #for rows 
#[1] "M" "L" "M" "H" 

其中DF

DF = read.table(text = 'v1 v2 v3 v4 
VL M H M 
M H L L 
M M M H 
VH H H VL', header = T, stringsAsFactors = F) 
+0

OMG ..你是天才 – user3328429

相關問題