【发布时间】:2021-09-28 23:54:41
【问题描述】:
你好可爱的 SO 我希望你玩得开心,我一直在使用 Base R 函数“Which”来处理序列非常有趣,但在更大范围内,我很快就会使用 tidyverse 来做一些数据争吵,我似乎无法找到将这些功能与 tidyverse 合并的方法。让我解释一下我想做什么:
我有以下数据集
| STUDENT | EVENT |
|---|---|
| James | GEO_EXAM |
| James | PIZZA_PARTY |
| Kylie | MATH_EXAM |
| Kylie | PIZZA_PARTY |
| Laura | MATH_EXAM |
| Mark | MATH_EXAM |
| Mark | PIZZA_PARTY |
我希望能够对事件进行排序(为简单起见,这些事件按所需的顺序排列)然后按学生分组并找到最后一个事件或最后一个事件或每组学生是什么在 PIZZA_PARTY 之前(我们将假设顺序从上到下),我拥有的数据集被过度简化以说明这种情况。
前面的数据集已经说过,对于 James 来说,PIZZA_PARTY 之前的事件是 GEO 考试,Kylie 是数学考试,Laura 在 PIZZA_PARTY 之前没有事件,最后是 Mark it是数学考试。这将是理想的结果。
但如果我忽略了我确实想通过 STUDENTS 解决这个 excersie 分组的事实,我可以轻松使用以下代码开始
df$EVENT[which(df$EVENT=="PIZZA_PARTY")-1]
但如果我想以我想要的方式使用 tidyverse 来解决这个问题:
df %>%
group_by(STUDENT) %>%
mutate(INDEX=(which(EVENT=="PIZZA_PARTY")-1))
但是我得到一个错误,当我使用summary时我也得到一个错误,我觉得我在碰壁,所以非常感谢你们,如果你们能指导我或者让我有什么文献、博客或书籍应该查看以了解如何在 tidyverse 中正确使用基本 R 函数,或者请参考一些对解决此问题有用的链接或博客,非常感谢
【问题讨论】: