您可以使用聚集的一個功能。在base R
。我們可以使用公式方法使用aggregate
。 ~
的LHS上的.
指定除~
的RHS上的分組變量「ID」之外的所有其他變量。我們將max
指定爲FUN
,它將給出按ID分組的每個列的max
值的摘要數據集。
aggregate(.~ID, df, FUN=max)
或者其他選項是dplyr
。我們按照'ID'進行分組,並使用summarise_each
和max
在funs
之內以獲得每列的max
值。
library(dplyr)
df %>%
group_by(ID) %>%
summarise_each(funs(max))
或者,我們可以轉換 'data.frame' 到 'data.table'(setDT(df)
)。按'ID'列分組,我們通過循環Data.table的子集(.SD
)與lapply
得到每列的max
。
library(data.table)
setDT(df)[,lapply(.SD, max) , by = ID]
如果有一個以上的「ID」等只有單一的專欄中,我們可以使用的summarise
代替summarise_each
即在一列的情況下data.table
df %>%
group_by(ID) %>%
summarise(score=max(score))
相似的代碼是
setDT(df)[, list(score=max(score)), by = ID]
傑出。我的第一篇文章和一個很好的答案來幫助我解決問題 - 非常感謝。 – james