2017-07-25 68 views
2

我的目標是創建一個data.table,其中顯示每位藝術家每週的事件總數。此外,我還想添加兩列,列出每個藝術家在特定的一週內發生的事件數量和音樂會的數量。計算每個藝術家在R data.table中的每週事件數

我data.table看起來是這樣的:

Year_week artist_id type event_id 
17\2  464836  Concert 54446 
17\2  4234234 Festival 6654 
17\3  89543  Concert 5321 
17\3  55211  Concert 85642 
17\4  32167  Concert 43222 
17\4  9876  Concert 13131 

我已經試着用一週的事件總數聚集。但是,由於我對R很新,我感覺我正在做的不是正確的方式。

#number of events per week per artist 
USevents_weekly_total = USevents[, list(number_of_events = .N (unique(event_id))), 
             by=c('Year_week', 'artist_id')] 

什麼是data.table中最簡單的方法呢?

+1

FWIW,在基礎R你會使用'長度(唯一的(...))'和data.table已執行了方便的'在akruns所示uniqueN(...)'回答。 –

回答

2

假設我們需要找到「事項標識」 unique元素的個數爲「Year_week」,「artist_id」和「藝術家」中,uniqueN功能可用於

USevents_weekly_total <- USevents[, list(number_of_events = uniqueN(event_id)), 
            by=c('Year_week', 'artist_id', 'Artist')] 

或者作爲@Frank提到

unique(USevents[, .(Year_week, artist_id, Artist)])[, .N, by=.(Year_week, artist_id)] 
+1

你有一個額外的括號 –

+1

@Moody_Mudskipper THanks撿起它 – akrun

+1

根據我的經驗'uniqueN(。),by = ...'可以很慢。我使用的一個繁瑣的選擇是:'唯一的(DT [,。(x,y,z)])[,.N,by =。(x,y)]' – Frank