簡體   English   中英

R,因數最大值

[英]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.

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