3 回答
TA贡献1859条经验 获得超6个赞
更新的答案
get_group_number = function(){
i = 0
function(){
i <<- i+1
i
}
}
group_number = get_group_number()
df %>% group_by(u,v) %>% mutate(label = group_number())
您还可以考虑以下稍微不可读的版本
group_number = (function(){i = 0; function() i <<- i+1 })()
df %>% group_by(u,v) %>% mutate(label = group_number())
使用iterators包
library(iterators)
counter = icount()
df %>% group_by(u,v) %>% mutate(label = nextElem(counter))
TA贡献1780条经验 获得超4个赞
dplyr有一个group_indices()你可以使用的功能:
df %>%
mutate(label = group_indices(., u, v)) %>%
group_by(label) ...
TA贡献1875条经验 获得超5个赞
使用的另一种方法data.table是
require(data.table)
setDT(df)[,label:=.GRP, by = c("u", "v")]
这导致:
u v label
1: 2 1 1
2: 1 3 2
3: 2 1 1
4: 3 4 3
5: 3 1 4
6: 1 1 5
7: 3 2 6
8: 2 3 7
9: 3 2 6
10: 3 4 3
- 3 回答
- 0 关注
- 662 浏览
添加回答
举报