Перечислите переменную группировки в таблице - PullRequest
0 голосов
/ 20 марта 2020

Я хотел бы знать, как использовать row_number или что-либо еще для преобразования группы переменных в целое число

tibble_test <- tibble(A = letters[1:10], group = c("A", "A", "A", "B", "B", "C", "C", "C", "C", "D"))

# to get the enumeration inside each group of 'group'
tibble_test %>% 
  group_by(group) %>% 
  mutate(G1 = row_number())


Но я хотел бы получить такой вывод:


# A tibble: 10 x 4
   A     group    G1    G2
   <chr> <chr> <dbl> <dbl>
 1 a     A         1     1
 2 b     A         2     1
 3 c     A         3     1
 4 d     B         1     2
 5 e     B         2     2
 6 f     C         1     3
 7 g     C         2     3
 8 h     C         3     3
 9 i     C         4     3
10 j     D         1     4

Мой вопрос: как получить этот столбец G2, я знаю, что мог бы преобразовать переменную 'group' в множитель, а затем целое число (после того, как столбец распределен), но я хотел бы знать, можно ли это сделать с помощью подсчета.

1 Ответ

1 голос
/ 20 марта 2020

Вам просто нужно сделать еще один шаг и включить групповые индексы с group_indices(). Помните, что то, как ваши данные упорядочены / отсортированы, повлияет на индекс.

library(dplyr)

tibble_test <- tibble(A = letters[1:10], group = c("A", "A", "A", "B", "B", "C", "C", "C", "C", "D"))

# to get the enumeration inside each group of 'group'
tibble_test %>% 
  group_by(group) %>% 
  mutate(G1 = row_number(),
         G2 = group_indices())

# A tibble: 10 x 4
# Groups:   group [4]
   A     group    G1    G2
   <chr> <chr> <int> <int>
 1 a     A         1     1
 2 b     A         2     1
 3 c     A         3     1
 4 d     B         1     2
 5 e     B         2     2
 6 f     C         1     3
 7 g     C         2     3
 8 h     C         3     3
 9 i     C         4     3
10 j     D         1     4
...