我正在尝试为相同的id行添加唯一的索引id变量。这是我的数据集的快照。
id <- c(1234, 1234, 2241,2241, 1252,1252,1252)
step <- c(0,0,0,0,0,1,-1)
data <- data.frame(id, step)
> data
id step
1 1234 0
2 1234 0
3 2241 0
4 2241 0
5 1252 0
6 1252 1
7 1252 -1
因此具有唯一索引ID的应如下所示:
> data
id step index
1 1234 0 1
2 1234 0 1
3 2241 0 2
4 2241 0 2
5 1252 0 3
6 1252 1 3
7 1252 -1 3
答案 0 :(得分:2)
我们可以使用match
中的base R
data$index <- with(data, match(id, unique(id)))
data$index
#[1] 1 1 2 2 3 3 3
答案 1 :(得分:2)
另一种base
解决方案:
transform(data, index=as.numeric(factor(id, levels = unique(id))))
# id step index
# 1 1234 0 1
# 2 1234 0 1
# 3 2241 0 2
# 4 2241 0 2
# 5 1252 0 3
# 6 1252 1 3
# 7 1252 -1 3
答案 2 :(得分:1)
这是一个data.table
解决方案:
library(data.table)
setDT(data)[, index := .GRP, by = id]
data
# id step index
# 1: 1234 0 1
# 2: 1234 0 1
# 3: 2241 0 2
# 4: 2241 0 2
# 5: 1252 0 3
# 6: 1252 1 3
# 7: 1252 -1 3