3 回答

TA貢獻1859條經(jīng)驗 獲得超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條經(jīng)驗 獲得超4個贊
dplyr有一個group_indices()你可以使用的功能:
df %>%
mutate(label = group_indices(., u, v)) %>%
group_by(label) ...

TA貢獻1875條經(jīng)驗 獲得超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 關注
- 696 瀏覽
添加回答
舉報