r - 每个主题的单一 ID - tidyverse
问题描述
我正在尝试为我的数据集中的每个主题创建一个 ID。基本上,我想要一个列,只要它是主题 A,它的值就是 1,只要它是主题,它就是 2,等等。
数据如下所示:
Subject <- as.factor(c(rep("A", 8), rep("B", 4), rep("C", 12)))
variable.A <- rnorm(mean = 300, sd = 50, n = Subject)
dat <- data.frame(Subject, variable.A)
dat
Subject variable.A
1 A 345.2206
2 A 308.3600
3 A 355.9006
4 A 286.2234
5 A 216.0149
6 A 204.1322
7 A 333.5757
8 A 225.2777
9 B 351.0208
10 B 184.0209
11 B 297.5687
12 B 370.6719
13 C 385.4616
14 C 257.3872
15 C 313.9441
16 C 311.0300
17 C 275.4909
18 C 349.2425
19 C 251.2615
20 C 358.9317
21 C 360.2139
22 C 341.3104
23 C 344.5236
24 C 257.9959
我在想我可以使用seq_along()
,但这只是计算每个主题的观察结果:
library(tidyverse)
dat <- dat %>%
group_by(Subject) %>%
mutate(index = seq_along(Subject))
dat %>% as.data.frame()
Subject variable.A index
1 A 345.2206 1
2 A 308.3600 2
3 A 355.9006 3
4 A 286.2234 4
5 A 216.0149 5
6 A 204.1322 6
7 A 333.5757 7
8 A 225.2777 8
9 B 351.0208 1
10 B 184.0209 2
11 B 297.5687 3
12 B 370.6719 4
13 C 385.4616 1
14 C 257.3872 2
15 C 313.9441 3
16 C 311.0300 4
17 C 275.4909 5
18 C 349.2425 6
19 C 251.2615 7
20 C 358.9317 8
21 C 360.2139 9
22 C 341.3104 10
23 C 344.5236 11
24 C 257.9959 12
解决方案
,data.table
另一种选择是.GRP
library(data.table)
setDT(dat)[, index := .GRP, Subject]
或与match
library(dplyr)
dat %>%
mutate(index = match(Subject, unique(Subject)))
推荐阅读
- javascript - Moongose 查找功能不适用于变量
- php - 如何在特定页面或 URL 上执行特定代码
- javascript - 数组javascript中的奇数到偶数
- sql - Laravel 将 Mysql 查询转换为 Eloquent
- typo3 - 如何在 Typo3 9.5.8 中设置 maxFileSize
- python - Python/Numpy:我在计算语义(图像)分割的精确召回曲线时做错了什么?
- python - 可导入的 `multiprocessing.Pool` 函数
- java - 如何解决“videoview 内存泄漏问题”?
- c# - 将请求发布到 asp.net 核心 Web API 并使用序列化程序设置问题
- react-native - 如何在 Windows 中启动克隆的 react-native 项目