第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過group_by中的group-number對數(shù)據(jù)表進行編號/標記?

如何通過group_by中的group-number對數(shù)據(jù)表進行編號/標記?

鴻蒙傳說 2019-09-06 16:09:14
我有一個tbl_df我想要group_by(u, v)觀察的每個不同的整數(shù)組合(u, v)。編輯:通過添加group_indices()回dplyr 0.4.0解決了這個問題a)然后我想為每個不同的組分配一些任意的不同數(shù)字標簽= 1,2,3 ......例如組合(u,v)==(2,3)可以得到標簽1,(1,3)可以得到2,依此類推。如何使用一個mutate(),沒有三步總結(jié)和自我加入?dplyr有一個整潔的功能n(),但是,讓元素的數(shù)目之內(nèi)它的組,而不是整體的組的數(shù)目。在data.table這將簡單地被稱為.GRP。b)實際上我真正想要分配字符串/字符標簽('A','B',...)。但是按整數(shù)編號組是很好的,因為我可以使用integer_to_label(i)如下。除非有一個聰明的方法來合并這兩個?但不要冒這個角色。set.seed(1234)# Helper fn for mapping integer 1..26 to character labelinteger_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) combinationsdf %>% group_by(u,v) %>% mutate(label = n()) # WRONG: n() is number of element within its group, not overall number of group   u v1  2 32  1 33  1 24  2 35  1 26  3 37  1 38  1 29  3 110 3 4KLUDGE 1: could do df %>% group_by(u,v) %>% summarize(label = n()) , then self-join
查看完整描述

3 回答

?
慕絲7291255

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))


查看完整回答
反對 回復 2019-09-06
?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

dplyr有一個group_indices()你可以使用的功能:


df %>% 

    mutate(label = group_indices(., u, v)) %>% 

    group_by(label) ...


查看完整回答
反對 回復 2019-09-06
?
慕田峪4524236

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


查看完整回答
反對 回復 2019-09-06
  • 3 回答
  • 0 關注
  • 696 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號