r data.table 使用多个因素进行总结
r data.table summarizing using more than one factor
我有以下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 & region,获取数字总和,并为每个因子变量创建新的 Coulm 和观察计数。我尝试了 aggregate、ddply 和其他带有变体类型的错误 :( 在此先感谢
我建议您将数字变量和因子变量分开并使用 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
这是一个使用data.table
的选项
library(data.table)
setDT(data)[,lapply(.SD, function(x) if(is.numeric(x)) sum(x) else .N),
by= list(VALUE_SEG,region)]
我有以下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 & region,获取数字总和,并为每个因子变量创建新的 Coulm 和观察计数。我尝试了 aggregate、ddply 和其他带有变体类型的错误 :( 在此先感谢
我建议您将数字变量和因子变量分开并使用 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
这是一个使用data.table
library(data.table)
setDT(data)[,lapply(.SD, function(x) if(is.numeric(x)) sum(x) else .N),
by= list(VALUE_SEG,region)]