我想根據3列爲每個不同的組創建唯一的順序數字ID,但對於每個組,ID必須從1開始到n。R對數據中每個組的R唯一ID重新編號
使用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 id 1 1 1 a 1 3 1 1 a 1 5 1 1 a 1 2 1 1 b 3 4 1 1 b 3 7 1 2 a 2 9 1 2 a 2 6 1 2 b 4 8 1 2 b 4 10 1 2 b 4
,我想有
> d k1 k2 k3 id 1 1 1 a 1 3 1 1 a 1 5 1 1 a 1 2 1 1 b 2 4 1 1 b 2 7 1 2 a 1 9 1 2 a 1 6 1 2 b 2 8 1 2 b 2 10 1 2 b 2
它的工作:)好。但它取決於以前的ID權利?如何在一次傳球中擁有ID? – jcarlos 2015-04-04 14:49:54
@jcarlos我剛剛使用了您創建的以前的'id'。你可以直接在'interaction(..)'組中使用它 – akrun 2015-04-04 14:50:36
@jcarlos我認爲data.table(ColonelBeauvel)的選項會更加直接,因爲它有'.GRP' – akrun 2015-04-04 14:54:09