【发布时间】:2017-06-06 05:22:24
【问题描述】:
我在 R 中有一个大型数据集,该数据集由来自单个案例的多个记录组织而成,嵌套在组中。这里有一个玩具示例:
d = data.frame(group = rep(c('control','patient'), each = 5), case = c('a', 'a', 'b', 'c', 'c', 'd','d','d','e','e'))
如果在 dplyr 链中,应用了group_by(group, case),如何创建一个列,以在组中按其大小写顺序对每一行进行编号?例如在下面的示例中,在第三列中,病例“a”是对照组中的第一个病例,病例“c”是第三个病例,但病例“d”的编号重置为 1,即患者组中的第一个病例.
group case number
control a 1
control a 1
control b 2
control c 3
control c 3
patient d 1
patient d 1
patient d 1
patient e 2
patient e 2
我可以通过使用“for”循环计算案例来了解如何做到这一点,但我想知道是否有办法在标准 dplyr 样式的操作链中实现这一点?
【问题讨论】:
-
d %>% group_by(group) %>% mutate(number = match(case, unique(case))) -
@docendodiscimus 非常优雅。如果这是一个答案,我会接受它......