0

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

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

4

1 回答 1

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,它只返回第一次出现。

于 2012-04-28T16:58:57.503 回答