将最大值添加到R中的新列

将最大值添加到R中的新列,r,R,以下是数据: a <- c(1,1,2,2,3) b <- c(1,3,5,9,4) df1 <- data.frame(a,b) df1 a b 1 1 1 3 2 5 2 9 3 4 我的问题是:如何计算“a”列的“max”列分组以及“b”列中的值 我对聚合函数做了一些研究,但仍然找不到解决方案 请帮助我们可以使用group by函数中的一个函数,该函数允许创建列,而不仅仅是对输出进行汇总。data.table选项简洁,因为赋值(:=)将创建一个新列。我们将“dat

以下是数据:

a <- c(1,1,2,2,3)  
b <- c(1,3,5,9,4)
df1 <- data.frame(a,b)
df1

a b
1 1
1 3
2 5
2 9
3 4
我的问题是:如何计算“a”列的“max”列分组以及“b”列中的值

我对聚合函数做了一些研究,但仍然找不到解决方案


请帮助

我们可以使用group by函数中的一个函数,该函数允许创建列,而不仅仅是对输出进行汇总。
data.table
选项简洁,因为赋值(
:=
)将创建一个新列。我们将“data.frame”转换为“data.table”,按“a”分组,得到“b”的最大值(
max(b)
)并将(
:=
)指定为一个新列。如果需要摘要,请使用
列表
而不是
:=
将其包装起来

library(data.table)
setDT(df1)[, Max:= max(b), a]

或者使用
base R
中的
ave
。这是一个罕见的基函数,它将输出与原始数据集的行数相同的长度。作为第一个参数,我们使用变量来获取的
max
of、2nd、3rd等(如果有)将是分组列。指定
FUN
。默认情况下,如果我们没有指定任何
FUN
,它将按组采用
平均值

df1$Max <- with(df1, ave(b, a, FUN=max)

我们可以使用group by函数中的一个函数,它允许创建一个列,而不只是对输出进行汇总。
data.table
选项简洁,因为赋值(
:=
)将创建一个新列。我们将“data.frame”转换为“data.table”,按“a”分组,得到“b”的最大值(
max(b)
)并将(
:=
)指定为一个新列。如果需要摘要,请使用
列表
而不是
:=
将其包装起来

library(data.table)
setDT(df1)[, Max:= max(b), a]

或者使用
base R
中的
ave
。这是一个罕见的基函数,它将输出与原始数据集的行数相同的长度。作为第一个参数,我们使用变量来获取的
max
of、2nd、3rd等(如果有)将是分组列。指定
FUN
。默认情况下,如果我们没有指定任何
FUN
,它将按组采用
平均值

df1$Max <- with(df1, ave(b, a, FUN=max)

对于你的结果,第3行,我想你的意思是最大值应该是5而不是9?对于你的结果,第3行,我想你的意思是最大值应该是5而不是9?