我有一个DTL表和查找表(GLMap)误差应用功能
DTL:
DEAL_TYPE DN_DIRECTION key COMPANY_CODE GLAccount
POWER SALE 1 AFFL_CO 1702
POWER PURCHASE 2 AFFL_CO 3702
MISC SALE 3 AFFL_CO 5717
MISC PURCHASE 4 AFFL_CO 5718
POWER SALE 5 AFFL_CO 1702
POWER SALE 6 MAIN
POWER PURCHASE 7 MAIN
MISC SALE 8 MAIN
MISC PURCHASE 9 MAIN
POWER SALE 10 MAIN
查找表(GLAcctMap):
DealType DR_CR GLAccount Customer
POWER P 3702 AFFL_CO
POWER S 1702 AFFL_CO
MISC P 5718 AFFL_CO
MISC S 5717 AFFL_CO
POWER P 6702 STD
POWER S 6712 STD
MISC P 5312 STD
MISC S 5313 STD
预期输出: DEAL_TYPE DN_DIRECTION键COMPANY_CODE GLAccount GLACCT POWER S 1 AFFL_CO 1702 1702 POWER P 2 AFFL_CO 3702 3702 MISC S 3 AF FL_CO 5717 5717 MISC第4页AFFL_CO 5718 5718 功率S 5 AFFL_CO 1702 1702 功率S 6 MAIN 6712 功率P 7 MAIN 6702 MISC S8中MAIN 5313 MISC第9页MAIN 5312 功率S 10 MAIN 6712
我想创建一个Output表,它是dtl表的副本,但是根据查找表中多列上的匹配添加额外的GLACCT列。逻辑是:如果GLAccount列为空,则从查找表(GLacctMap)中获取匹配的Account,否则将GLAccount编号放在新列中。
这里有一个功能我想:
load_details <- function(dld) {
phys_fin = 0
findgl <- function(x){
if(is.na(x$GLAccount) ) {
GLACCT <- GLacctMap[ match(paste(x$DEAL_TYPE, x$DN_DIRECTION, sep=":"),
paste(GLacctMap$DealType,GLacctMap$DR_CR,sep=":")), "GLAccount"]
} else {
GLACCT <- x$GLAccount
}
GLACCT
}
DLD $ GLACCT < - 应用(currdld,1,函数(X)findgl)
}
PEDLD < - load_details(currdld)
我收到以下错误: IBCO的Spotfire Statistics Service中返回一个错误:“错误as.data.frame.default(passed.args [我],stringsAsFactors = S:不能强迫类' "功能" '转换成data.frame'。
?干杯。 – scsimon
我正在使用terr在spotfire中运行这个。 – Gerald