我有一個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