[英]R, max value for factor
您好,如果有人提出這個問題,請重定向-我無法直接看到它。
我想使用R,並有一個簡單的數據框:第一列是ID,第二列是分數。 每個ID具有36行和相應的分數。 有數千個ID。
我想生成一個摘要,其中包含:每個唯一ID的1個條目,它們在36行中的最高得分。
我也是R的新手,但了解以下內容:
apply(dataframe,2,max)將給出最大值,但不會按ID細分。
我知道有一系列“應用”函數可以在表上應用一個函數,但是我不知道如何組合才能得到想要的東西。
如果在Excel中,則相當於一個簡單的數據透視表-但我想學習如何在R中有效地做到這一點。
非常感謝
您可以使用一種匯總功能。 在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'列分組,我們通過用lapply
循環Data.table( .SD
)的子集來獲得每一列的max
。
library(data.table)
setDT(df)[,lapply(.SD, max) , by = ID]
如果除“ ID”外僅存在單列,則可以使用summarise_each
代替summarise
,即
df %>%
group_by(ID) %>%
summarise(score=max(score))
如果是單列,則data.table
類似代碼是
setDT(df)[, list(score=max(score)), by = ID]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.