【发布时间】:2021-12-24 07:25:45
【问题描述】:
我试图弄清楚如何逐行比较数据框中的值,这些值与aggregate() 函数给出的值相对应。
例如:
#create data frame
df <- data.frame(team=c('a', 'a', 'b', 'b', 'b', 'c', 'c'),
pts=c(5, 8, 14, 18, 5, 7, 7),
rebs=c(8, 8, 9, 3, 8, 7, 4))
#view data frame
df
team pts rebs
1 a 5 8
2 a 8 8
3 b 14 9
4 b 18 3
5 b 5 8
6 c 7 7
7 c 7 4
#find mean points scored by team
agg_df = aggregate(df$pts, list(df$team), FUN=mean)
Group.1 x
1 a 6.50000
2 b 12.33333
3 c 7.00000
我想要做的是使用类似于以下伪代码的逻辑在df 中创建一个新列:
df$pts[i] > agg_df$x[i] 然后df$performance = 'overperformed' 否则df$performance = 'underperformed'。
但这并不是我想要的。我想将第 1 行和第 2 行的积分与agg_df 中团队 a 的平均积分进行比较。同样,df 中的第 3-5 行应与agg_df 中 b 组的平均分进行比较。
最终结果如下:
> df
team pts rebs performance
1 a 5 8 under
2 a 8 8 over
3 b 14 9 over
4 b 18 3 over
5 b 5 8 under
6 c 7 7 average
7 c 7 4 average
我对如何实现这一点感到有些困惑,或者它是否可以实现,因此非常感谢任何帮助。
【问题讨论】:
标签: r dataframe aggregate-functions