Hi Folks:
I'm new to R and am having trouble calling a user-defined function
within the by() function. I have checked on-line help and the R
documentation to no avail. I have a data frame with a sample subset
represented here:
ACCT_GROUP_DIM_KEY MV_BASE TOT_DEBT TOT_EQTY
1 555586574850 1082576.3 685.00 2422.50
2 555586574850 1032994.2 2444.00 1724.00
3 555586574850 620471.0 3494.84 2712.59
4 555586574850 225047.4 592.21 514.17
5 555586574850 353844.5 48.25 396.28
6 555586574850 164043.6 0.00 204.14
7 555586574850 115792.4 436.25 669.60
8 555586574850 1299872.0 1794.21 1509.21
9 555586574851 100000.0 1.00 500.00
10 555586574851 100001.0 1.01 501.00
I am using the by() function to apply an aggregation on rows grouped by
the key value. A simple mean aggregation works as seen here:
▾ Quoted text (1 line)
by (example.sample[, 2:4], example.sample["ACCT_GROUP_DIM_KEY"], mean)
ACCT_GROUP_DIM_KEY: 555586574850
MV_BASE TOT_DEBT TOT_EQTY
611830.169 1186.845 1269.061
------------------------------------------------------------------------
-------------------------
ACCT_GROUP_DIM_KEY: 555586574851
MV_BASE TOT_DEBT TOT_EQTY
100000.500 1.005 500.500
I have defined a function that calculates a metric I want to apply
against each group. The function is:
function (x) {sum(
(x["TOT_DEBT"]/x["TOT_EQTY"])*(x["MV_BASE"]/sum(x["MV_BASE"]))*100)}
When I call the function without any grouping I get:
[1] 88.1984
When I try to call my user-defined function in the by() function I get
the following error:
▾ Quoted text (1 line)
by (example.sample[, 2:4], example.sample["ACCT_GROUP_DIM_KEY"],
debt.eq(example.sample))
Error in FUN(X[[1L]], ...) : could not find function "FUN"
What is it I am doing wrong/missing here? Thanks in advance,
John
Message-ID:
<761B467185125146B58FC9540C493F6A07B46230@PROD-MSG-CLU-03.messaging.wellmanage.com>