我在R工作,我有一个数据集,每个主题有多个条目。我想创建一个索引变量,按主题索引。例如:
Subject Index
1 A 1
2 A 2
3 B 1
4 C 1
5 C 2
6 C 3
7 D 1
8 D 2
9 E 1
第一个A条目索引为1,而第二个A条目索引为2.第一个B条目索引为1,等等。
任何帮助都会很棒!
答案 0 :(得分:1)
这是一个快速data.table
方法
library(data.table)
setDT(df)[, Index := seq_len(.N), by = Subject][]
# Subject Index
# 1: A 1
# 2: A 2
# 3: B 1
# 4: C 1
# 5: C 2
# 6: C 3
# 7: D 1
# 8: D 2
# 9: E 1
或者用基础R
with(df, ave(as.numeric(Subject), Subject, FUN = seq_along))
## [1] 1 2 1 1 2 3 1 2 1
或dplyr
(不要在data.table
班级上运行
library(dplyr)
df %>%
group_by(Subject) %>%
mutate(Index = row_number())
答案 1 :(得分:1)
使用dplyr
library(dplyr)
df %>% group_by(Subject) %>% mutate(Index = 1:n())
你得到:
#Source: local data frame [9 x 2]
#Groups: Subject
#
# Subject Index
#1 A 1
#2 A 2
#3 B 1
#4 C 1
#5 C 2
#6 C 3
#7 D 1
#8 D 2
#9 E 1