2012-04-28 80 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