r - 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:每个组内每个分数的平方和的平方根。
- ID 是唯一的。(每一行都是唯一的)
- 有100+组
- 计算基于变量“分数”
- 每组中的行数不同
例如,在最终输出中,只有两列:
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,谢谢你的帮助。
解决方案
您可以使用 :
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]
推荐阅读
- java - Java - 文件读取和分隔符所需的帮助
- python - 使用克里金法或最近邻法进行空间插值?
- python - 如何为时间序列的 RNN 的双向层定义 input_shape
- java - 类的Java语法
- docker - Docker-compose postgres 表未显示在 Navicat 上
- swift - 如何以编程方式设置控制图像视图宽度的滑块
- oracle - 如何从oracle数据库中提取数据并保存在谷歌云平台
- firebase - 为 Google Analytics(分析)网络 + 应用程序属性安排电子邮件报告
- django - 位置参数缺少“状态”
- java - 如何让 Spring Tools Suite 识别 spring 注释