【发布时间】:2015-04-04 14:37:55
【问题描述】:
我想基于 3 列为每个不同的组创建一个唯一的连续数字 ID,但对于每个组,ID 必须从 1 到 n 开始。
使用Creating a unique ID 的解决方案,我可以创建唯一的 ID,但它们对于整个数据帧是连续的。
k1 <- c(1,1,1,1,1,1,1,1,1,1)
k2 <- c(1,1,1,1,1,2,2,2,2,2)
k3 <- rep(letters[1:2],5)
df <- as.data.frame(cbind(k1,k2, k3))
d <- transform(df, id = as.numeric(interaction(k1,k2,k3, drop=TRUE)))
d <- d[with(d, order(k1,k2,k3)),]
结果是
> d k1 k2 k3 标识 1 1 1 一 1 3 1 1 一 1 5 1 1 一 1 2 1 1 乙 3 4 1 1 乙 3 7 1 2 一 2 9 1 2 一 2 6 1 2 乙 4 8 1 2 乙 4 10 1 2 乙 4我想拥有
> d k1 k2 k3 标识 1 1 1 一 1 3 1 1 一 1 5 1 1 一 1 2 1 1 乙 2 4 1 1 乙 2 7 1 2 一 1 9 1 2 一 1 6 1 2 乙 2 8 1 2 乙 2 10 1 2 乙 2【问题讨论】: