首页 > 解决方案 > R - 如何通过自定义计算使用分组

问题描述

假设我有以下示例数据:

ID Group Score
1 A 1
2 A 3
3 A 2
4 B 5
5 B 1
6 C 1
7 C 2
8 C 4
9 D 1
10 D 3

我想通过自定义计算使用 group by:每个组内每个分数的平方和的平方根。

例如,在最终输出中,只有两列:

Group AdjustedScore
A        3.74         **Square root of (1+9+4)
B        5.09         **Square root of (25+1)
C        4.58         **Square root of (1+4+16)
......
......

如何在 R 中做到这一点?我不擅长R,谢谢你的帮助。

标签: rloopsgroup-bysquare-root

解决方案


您可以使用 :

library(dplyr)
df %>% group_by(Group) %>% summarise(Score = sqrt(sum(Score^2)))

#  Group Score
#  <chr> <dbl>
#1 A      3.74
#2 B      5.10
#3 C      4.58
#4 D      3.16

在基础 R 中,您可以使用aggregate

aggregate(Score~Group, df, function(x) sqrt(sum(x^2)))

或与data.table

library(data.table)
setDT(df)[, sqrt(sum(Score^2)), Group]

推荐阅读