Установите уникальные идентификаторы, которые начинаются с нуля в R data.frame - PullRequest
2 голосов
/ 03 августа 2020

У меня есть фрейм данных, который выглядит следующим образом

column1
 1
 1
 2
 3
 3

, и я хотел бы дать уникальный идентификатор каждому элементу. Моя проблема в том, что я не могу найти способ, чтобы уникальные идентификаторы начинались с нуля и были такими

column1 column2
 1        0
 1        0
 2        1
 3        2
 3        2

Любая помощь приветствуется

Ответы [ 2 ]

3 голосов
/ 03 августа 2020

Попробуйте это, cur_group_id from dplyr создаст идентификатор из 1, но вы можете легко заставить его начинать с нуля:

library(dplyr)
#Data
df <- structure(list(column1 = c(0L, 1L, 2L, 3L, 3L)), class = "data.frame", row.names = c(NA,-5L))
#Mutate
df %>% group_by(column1) %>% mutate(id=cur_group_id()-1)

# A tibble: 5 x 2
# Groups:   column1 [4]
  column1    id
    <int> <dbl>
1       0     0
2       1     1
3       2     2
4       3     3
5       3     3
0 голосов
/ 03 августа 2020

Мы могли бы использовать match

library(dplyr)
df1 %>% 
     mutate(column2 = match(column1, unique(column1)) - 1)

данные

df1 <- structure(list(column1 = c(1L, 1L, 2L, 3L, 3L)), class = "data.frame",
row.names = c(NA, 
-5L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...