簡體   English   中英

使用plyr :: ddply按組返回列的最大值/最小值的行

[英]return rows with max/min value of column, by group, using plyr::ddply

我找到了這個問題的答案(現已刪除 ),並且很好奇為什么它不起作用。

問題是:按組返回與最小值對應的行。

因此,例如,給定數據集:

df <- data.frame(State = c(rep('AK',4),rep('RI',4)),
                   Company = LETTERS[1:8],
                   Employees = c(82L, 104L, 37L, 24L, 19L, 118L, 88L, 42L)) 

...正確的答案是:

    State Company Employees
 1:    AK       D        24
 2:    RI       E        19

可以通過例如

library(data.table); setDT(df)[ , .SD[which.min(Employees)], by = State]

我的問題是為什么這個plyr::ddply命令不起作用

library(plyr)
ddply(df, .(State), summarise, Employees=min(Employees), 
      Company=Company[which.min(Employees)])
# returns:
#   State Employees Company
# 1    AK        24       A
# 2    RI        19       E

換句話說,為什么which.min(Employees)為每個組返回1而不是c(4,1) 請注意,在ddply之外,此方法有效:

summarise(df, minEmp = min(Employees), whichMin = which.min(Employees))
#   minEmp whichMin
# 1     19        5

我使用plyr不多,但如果有合理的方法,我想知道正確的方法。

我得到正確的答案。 不確定您的情況..

library(plyr)
ddply(df, .(State), function(x) x[which.min(x$Employees),])
  State Company Employees
1    AK       D        24
2    RI       E        19

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM