我找到了一個答案(現在deleted)到this question,我很好奇它爲什麼不起作用。返回列的最大/最小值,按組,使用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
不多,但我想知道做正確的方式,如果有一個合理的一個。
@hrbrmstr我看見你回覆了我的意見,但隨後消失了 - 只是好奇什麼是正確的方式來使用'plyr'會做... – C8H10N4O2