gpt4 book ai didi

R 组按聚合

转载 作者:行者123 更新时间:2023-12-02 06:57:43 24 4
gpt4 key购买 nike

在 R(我相对较新)中,我有一个数据框,其中包含许多列和一个数字列,我需要根据另一列确定的组进行聚合。

 SessionID   Price
'1', '624.99'
'1', '697.99'
'1', '649.00'
'7', '779.00'
'7', '710.00'
'7', '2679.50'

我需要按 SessionID 分组并返回每个 ONTO 原始数据帧的最大值和最小值,例如:

 SessionID   Price     Min     Max
'1', '624.99' 624.99 697.99
'1', '697.99' 624.99 697.99
'1', '649.00' 624.99 697.99
'7', '779.00' 710.00 2679.50
'7', '710.00' 710.00 2679.50
'7', '2679.50' 710.00 2679.50

有什么想法可以有效地做到这一点吗?

最佳答案

使用基础 R:

df <- transform(df, Min = ave(Price, SessionID, FUN = min),
Max = ave(Price, SessionID, FUN = max))
df
# SessionID Price Min Max
#1 1 624.99 624.99 697.99
#2 1 697.99 624.99 697.99
#3 1 649.00 624.99 697.99
#4 7 779.00 710.00 2679.50
#5 7 710.00 710.00 2679.50
#6 7 2679.50 710.00 2679.50

由于您想要的结果不是聚合的,而只是带有两个额外列的原始数据,因此您希望在 base R 中使用 ave 而不是 aggregate,您通常会这样做如果您想通过 SessionID 来聚合数据,请使用。 (注意:AEBilgrau 表明您也可以使用带有一些额外匹配的聚合来做到这一点。)

同样,对于 dplyr,您希望使用 mutate 而不是 summarise,因为您不想聚合/汇总数据。

使用 dplyr:

library(dplyr)
df <- df %>% group_by(SessionID) %>% mutate(Min = min(Price), Max = max(Price))

关于R 组按聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com