r - 分别标准化每个唯一组的值
问题描述
数据集“df”包含以下两个变量:
SessionID TotalMark
14 50
14 5
14 54
14 55
17 96
17 63
17 78
17 25
17 98
现在我想分别为每组 SessionID 标准化 TotalMark,以便按(SessionID)分组并将这些标准化分数放入新变量 StandTotalMark。这是期望的结果:
SessionID TotalMark StandTotalMark
14 50 0.373490072
14 5 -1.493960286
14 54 0.539485659
14 55 0.580984556
17 96 0.8024557
17 63 -0.3009209
17 78 0.2006139
17 25 -1.5714758
17 98 0.8693270
我确实达到了预期的结果,但我想知道是否有人可以在 R 中提出一个优雅的单行解决方案而无需使用 for 循环?我使用 scale 函数来标准化 TotalMark
解决方案
你可以很容易地做到这一点dplyr
library(dplyr)
dd %>%
group_by(SessionID) %>%
mutate(StandTotalMark=scale(TotalMark))
用
dd <- read.table(text="SessionID TotalMark
14 50
14 5
14 54
14 55
17 96
17 63
17 78
17 25
17 98", header=TRUE)
推荐阅读
- git - .gitignore 不忽略和删除缓存不修复
- c# - 在创建要从 [FromBody] 接收某些字段的 Web 请求时如何指定
- node.js - 刷新猫鼬后默认生成的值(短网址)更改
- php - 根据仅保留最新的值删除数组中的重复对象(基于时间戳的第二个值)
- python - Selenium 用一个扭曲的 Python 滚动到视图中
- python - python在clojure中的累积等价物
- java - Docker compose 无法在 java 和 mysql 容器之间建立连接
- python - 到达某一行后如何停止程序?
- python - python 3.8中的Tensorflow安装错误
- sql - DAX 使用 AVERAGE 计算滚动平均值