r - 获取R中的组序列
问题描述
所以我已经做了我需要的,但我确信有更好的方法来做到这一点
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。一种更简单的方法来做到这一点。我看过 SO 中的 group_indices ,但我认为那已经被弃用了。最好在 tidyverse 中需要更好的方法。
解决方案
我不知道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)
推荐阅读
- python - opencv通过拉伸的关键点对齐两个图像
- reactjs - 提交几个不同的 React 表单,在管理这些表单的组件之外使用一个按钮
- inno-setup - 当磁盘空间不足时,如何防止 Inno Setup 提供跳过文件?
- r - 在 lubridate 中不允许日历日期
- r - 如何使用 R 调用振幅导出 API
- gradle - 无法获取最新版本的 Gradle 依赖项
- android - Android 模拟器设备无法打开带有 google play 登录的设备
- twitter-bootstrap - 引导表单格式
- android - 错误资源 bool fb_auto_log_app_events_enabled
- python - 如何阻止打开 IPython?