2015-04-23 36 views
0

我有以下data.table[R data.table總結使用一個以上的因素

'data.frame': 66977 obs. of 16 variables: 
$ SUBS       : int 
$ CITY       : Factor w/ 18 levels 
$ VALUE_SEG     : Factor w/ 7 levels 
$ region      : Factor w/ 5 levels 
$ SUM.DATA_PPU_REV_DEC.  : num 
$ SUM.DATA_BUNDLE_REV_DEC.  : int 
$ SUM.DATA_USAGE_TOTAL_KB_DEC. : num 
$ SUM.THIS_MONTH_REV_DEC.  : num 
$ SUM.VOICE_ONNET_DURATION_DEC.: num 
$ SUM.VOICE_ONNET_REV_DEC.  : num 
$ SUM.VOICE_OFFNET_REV_DEC. : num 
$ SUM.SMS_ONNET_REV_DEC.  : num 
$ SUM.SMS_OFFNET_REV_DEC.  : int 
$ SUM.RECHARGE_DEC.   : int 
$ STATUS_DEC     : Factor w/ 5 levels 
$ TYPE_DEC_2     : Factor w/ 6 levels 

我想這組由兩個因素變量的假設VALUE_SEG &區域,獲得總和數量和創建每個因素變量的新庫侖數與觀測值的計數。我varians類型:(感謝錯誤的tryied骨料,ddply和其他提前

回答

1

我建議你單獨的數字和因子變量和使用dplyr概括。它可以像

library(dplyr) 

data %>% select(VALUE_SEG,region,SUM..... all numeric variables) %>% 
    group_by(VALUE_SEG,region) %>% summarize_each(funs(sum)) -> summary1 

## For factors 

data %>% select(VALUE_SEG,region,SUM..... all factors variables) %>% 
    group_by(VALUE_SEG,region) %>% summarize_each(funs(n)) -> summary2 

## Then you can merge these results 

Summary <- merge(summary1,summary2,by="VALUE_SEG") 

有關更多詳細信息採用這種封裝形式訪問此link

+0

感謝@koundy一種選擇,我嘗試你的建議,但我得到了錯誤Error Method in UseMethod(「select_」): 沒有適用於'select_'的方法應用於類「function」的對象 –

+0

您是否只運行此代碼?在'select(..)'函數中,您應該編寫所有數字/因子列名稱。如果你能提供一個可重複的例子,最好檢查一下。 – Koundy

+0

我的錯誤,我通過sub.nov%>%select(VALUE_SEG,region,SUBS + SUM.DATA_PPU_REV_NOV。,SUM.DATA_BUNDLE_REV_NOV。,SUM.DATA_USAGE_TOTAL_KB_NOV。,SUM.THIS_MONTH_REV_NOV。,SUM.VOICE_ONNET_DURATION_NOV。,SUM.VOICE_ONNET_REV_NOV。 ,SUM.VOICE_OFFNET_REV_NOV。,SUM.SMS_ONNET_REV_NOV。,SUM.SMS_OFFNET_REV_NOV。,SUM.RECHARGE_NOV。)%>% group_by(VALUE_SEG,region)%>%summarize(sum) - > summary1但在總結中得到低於錯誤--- ---錯誤:不是矢量..感謝您的支持 –

3

下面是使用data.table

library(data.table) 
setDT(data)[,lapply(.SD, function(x) if(is.numeric(x)) sum(x) else .N), 
          by= list(VALUE_SEG,region)]