如何从聚合结果中查找字段名称

时间:2012-04-28 16:44:52

标签: r dataframe

我试图根据该数据框的最大聚合值查找数据框的索引或名称,例如:

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]]

1 个答案:

答案 0 :(得分:3)

首先,您只需直接在colSums

上运行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,这只会返回第一次出现。