R-聚合函数创建子列表
我正在使用聚合函数来总结一些数据。数据是贷款数据,我有ContractNum和LoanAmount。我想按StartDate汇总数据,计算贷款数量并平均贷款金额。 以下是我使用的数据和函数示例:R-聚合函数创建子列表,r,dataframe,aggregate,R,Dataframe,Aggregate,我正在使用聚合函数来总结一些数据。数据是贷款数据,我有ContractNum和LoanAmount。我想按StartDate汇总数据,计算贷款数量并平均贷款金额。 以下是我使用的数据和函数示例: ContractNum <- c("RHL-1","RHL-2","RHL-3","RHL-3") StartDate <- c("2016-11-01","2016-11-01","2016-12-01","2016-12-01") LoanPurpose <- c("Persona
ContractNum <- c("RHL-1","RHL-2","RHL-3","RHL-3")
StartDate <- c("2016-11-01","2016-11-01","2016-12-01","2016-12-01")
LoanPurpose <- c("Personal","Personal","HomeLoan","Investment")
LoanAmount <- c(200,500,600,150)
dat <- data.frame(ContractNum,StartDate,LoanPurpose,LoanAmount)
aggr.data <- aggregate(
cbind(LoanAmount,ContractNum) ~ StartDate + LoanPurpose
,data = dat
,FUN = function(x)c(count = mean(x),length(x))
)
但当我看到它的结构时,它似乎创建了一个子列表:
> str(aggr.data)
'data.frame': 3 obs. of 4 variables:
$ StartDate : Factor w/ 2 levels "2016-11-01","2016-12-01": 2 2 1
$ LoanPurpose: Factor w/ 3 levels "HomeLoan","Investment",..: 1 2 3
$ LoanAmount : num [1:3, 1:2] 600 150 350 1 1 2
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "count" ""
$ ContractNum: num [1:3, 1:2] 3 3 1.5 1 1 2
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "count" ""
我如何摆脱这个子列表,以便能够以通常访问DF的方式访问每个列?我知道在代码中我要求给我一个ContractNum的平均值,这是没有意义的,但是我可以去掉这个列
谢谢只需执行do.calldata.frame。。。在aggr.data上取消对矩阵的测试
aggr.data <- do.call(data.frame, aggr.data);
str(aggr.data);
#'data.frame': 3 obs. of 6 variables:
# $ StartDate : Factor w/ 2 levels "2016-11-01","2016-12-01": 2 2 1
# $ LoanPurpose : Factor w/ 3 levels "HomeLoan","Investment",..: 1 2 3
# $ LoanAmount.count : num 600 150 350
# $ LoanAmount.V2 : num 1 1 2
# $ ContractNum.count: num 3 3 1.5
# $ ContractNum.V2 : num 1 1 2
为什么会被否决?您的示例代码可能不起作用?制作aggr.data时,您有一个额外的参数。顺便说一句,我不是最悲观的选民。
aggr.data <- do.call(data.frame, aggr.data);
str(aggr.data);
#'data.frame': 3 obs. of 6 variables:
# $ StartDate : Factor w/ 2 levels "2016-11-01","2016-12-01": 2 2 1
# $ LoanPurpose : Factor w/ 3 levels "HomeLoan","Investment",..: 1 2 3
# $ LoanAmount.count : num 600 150 350
# $ LoanAmount.V2 : num 1 1 2
# $ ContractNum.count: num 3 3 1.5
# $ ContractNum.V2 : num 1 1 2