2012-04-28 154 views
0

我試圖查找基於最大的數據幀的aggrate值的數據幀的索引,名稱查找字段名稱,例如:如何從彙總結果

df <- data.frame(
     id = 1:6, 
     v1 = c(3, 20, 34, 23, 23, 56), 
     v2 = c(1, 3, 4, 10, 30, 40), 
     v3 = c(20, 35, 60, 60, 70, 80)) 

    id v1 v2 v3 
1 1 3 1 20 
2 2 20 3 35 
3 3 34 4 60 
4 4 23 10 60 
5 5 23 30 70 
6 6 56 40 80 

> colSums(as.data.frame(df[[1]])) 
df[[1]] 
    21 

> colSums(as.data.frame(df[[2]])) 
df[[2]] 
    159 

> colSums(as.data.frame(df[[3]])) 
df[[3]] 
    88 

因此,例如最大結果使用colSums是159,我試圖找出如何返回「df[[2]]

+0

這裏只有一個data.frame。你想要得到什麼?總和最高的列? – 2012-04-28 16:53:42

回答

3

首先,你可以簡單地在你的data.frame

> colSums(df) 
id v1 v2 v3 
21 159 88 325 
直接運行

子集是一件容易的事

> df[which.max(colSums(df))] 
    v3 
1 20 
2 35 
3 60 
4 60 
5 70 
6 80 

或者,如果你只是想索引,因爲隱含在你的第一行:

> which.max(colSums(df)) 
v3 
4 

還要注意的是,如果你希望有可能是多個列具有相同的最大總和,並且您想要返回所有這些值,則可以使用which(colSums(df) == max(colSums(df)))而不是which.max,該值僅返回第一個匹配項。

+0

謝謝你正是我在找的東西,並對分析中的錯誤表示歉意。 – Sam35 2012-04-28 20:02:44