我有一个tbl_df我想要group_by(u, v)观察的每个不同的整数组合(u, v)。
编辑:通过添加group_indices()回dplyr 0.4.0解决了这个问题
a)然后我想为每个不同的组分配一些任意的不同数字标签= 1,2,3 ......例如组合(u,v)==(2,3)可以得到标签1,(1,3)可以得到2,依此类推。如何使用一个mutate(),没有三步总结和自我加入?
dplyr有一个整洁的功能n(),但是,让元素的数目之内它的组,而不是整体的组的数目。在data.table这将简单地被称为.GRP。
b)实际上我真正想要分配字符串/字符标签('A','B',...)。但是按整数编号组是很好的,因为我可以使用integer_to_label(i)如下。除非有一个聪明的方法来合并这两个?但不要冒这个角色。
set.seed(1234)
# Helper fn for mapping integer 1..26 to character label
integer_to_label <- function(i) { substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i,i) }
df <- tbl_df(data.frame(u=sample.int(3,10,replace=T), v=sample.int(4,10,replace=T)))
# Want to label/number each distinct group of unique (u,v) combinations
df %>% group_by(u,v) %>% mutate(label = n()) # WRONG: n() is number of element within its group, not overall number of group
u v
1 2 3
2 1 3
3 1 2
4 2 3
5 1 2
6 3 3
7 1 3
8 1 2
9 3 1
10 3 4
KLUDGE 1: could do df %>% group_by(u,v) %>% summarize(label = n()) , then self-join
慕丝7291255
Helenr
慕田峪4524236