R、 因子的最大值

R、 因子的最大值,r,max,R,Max,您好,如果有人问这个问题,请重定向-我无法直接看到 我想使用R,并有一个简单的数据帧: 第一列是ID,第二列是分数。 每个ID有36行和相应的分数。 有几千个ID 我想生成一个摘要,其中包含: 每个唯一ID有一个条目,其36行的最大分数 我对R也是新手,但知道以下几点: apply(dataframe,2,max)将给出最大值,但不会按ID细分 我知道有一系列“应用”函数可以在表上应用函数,但我不知道如何组合以获得我想要的 如果它是在Excel中,它将相当于一个简单的透视表——但我想学习如何在R

您好,如果有人问这个问题,请重定向-我无法直接看到

我想使用R,并有一个简单的数据帧: 第一列是ID,第二列是分数。 每个ID有36行和相应的分数。 有几千个ID

我想生成一个摘要,其中包含: 每个唯一ID有一个条目,其36行的最大分数

我对R也是新手,但知道以下几点:

apply(dataframe,2,max)将给出最大值,但不会按ID细分

我知道有一系列“应用”函数可以在表上应用函数,但我不知道如何组合以获得我想要的

如果它是在Excel中,它将相当于一个简单的透视表——但我想学习如何在R中高效地完成它


非常感谢

您可以使用其中一个聚合功能。在
基本R
中。我们可以将
聚合
与公式方法结合使用。
~
左侧的
指定除分组变量“ID”之外的所有其他变量,分组变量“ID”位于
~
右侧。我们将
max
指定为
FUN
,它将给出按“ID”分组的每个列的
max
值的摘要数据集

aggregate(.~ID, df, FUN=max)
或者另一个选项是
dplyr
。我们按“ID”分组,并在
funs
中使用
max
对每个列进行总结,以获得每个列的
max

library(dplyr)
df %>%
   group_by(ID) %>%
   summarise_each(funs(max))
或者我们可以将“data.frame”转换为“data.table”(
setDT(df)
)。按“ID”列分组,我们通过将Data.table(
.SD
)的子集与
lappy
循环,得到每列的
max

 library(data.table)
 setDT(df)[,lapply(.SD, max) , by = ID]
如果除了“ID”之外只有一列,我们可以使用
summary
而不是
summary\u each
,即

   df %>%
      group_by(ID) %>%
      summarise(score=max(score))
数据的类似代码。如果是单列,则为表

  setDT(df)[, list(score=max(score)), by = ID] 

杰出的。我的第一篇帖子和一个很好的答案帮助我解决了这个问题-非常感谢。