получить последовательность группы в R - PullRequest
0 голосов
/ 28 марта 2020

Итак, я уже сделал то, что мне нужно, но я уверен, что есть лучший способ сделать это

library(tidyverse)
library(schrute)
office <- schrute::theoffice

top_3_lines_per_episode <- office %>% 
  group_by(season,episode,episode_name,imdb_rating) %>% 
  count(character) %>%
  top_n(3, n) %>% ungroup()

epi_num<-top_3_lines_per_episode %>% 
  select(episode_name) %>% 
  unique() %>% 
  mutate(episode_num=row_number()) 

top_3_lines_per_episode %>% 
  inner_join(epi_num)

Я хочу создать столбец epi_num, который будет выполнен с использованием выше. Более простой способ сделать это. Я смотрел на group_indices из SO, но я думаю, что это устарело. Нужен лучший способ желательно в тидиверсе.

1 Ответ

2 голосов
/ 28 марта 2020

Мне не известно о том, что group_indices устарела, на самом деле это идеальный вариант.

library(dplyr)

office %>% 
  group_by(season,episode,episode_name,imdb_rating) %>% 
  count(character) %>%
  top_n(3, n) %>%
  ungroup %>%
  mutate(episode_num = group_indices(., season,episode,episode_name,imdb_rating))

Другой вариант - объединить столбцы с unite, а затем match, чтобы получить episode_num.

office %>% 
  group_by(season,episode,episode_name,imdb_rating) %>% 
  count(character) %>%
  top_n(3, n) %>%
  ungroup %>%
  tidyr::unite(temp, season,episode,episode_name,imdb_rating, remove = FALSE) %>%
  mutate(episode_num = match(temp, unique(temp))) %>%
  select(-temp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...