Я хочу создать уникальный последовательный числовой идентификатор для каждой отдельной группы на основе 3 столбцов, но для каждой группы идентификаторы должны начинаться с 1 по n.R уникальный идентификатор перенумерации для каждой группы в data.frame
Используя решение в Creating a unique 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? как получить идентификатор за один проход? – jcarlos
@jcarlos Я только что использовал предыдущий «id», который вы создали. вы можете напрямую использовать его в группе 'взаимодействия (..)' – akrun
@jcarlos Я думаю, что опция по data.table (ColonelBeauvel) будет более прямой, так как она имеет .GRP' – akrun