dtl テーブルとルックアップ テーブル (GLMap) があります。
詳細:
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_DN_DIRECTIONキーカンパニー_CODE GLACCT GLACCT POWERS 1 AFFL_CO 1702 1702 POWER P 2 AFFL_CO 3702 3702 MISC S 3 AFFL_CO 5717 5717 MISC P4 AFFL_CO 5718 5718 POWERS S 8 メイン 5313 その他 P 9 メイン 5312 電源 S 10 メイン 6712
dtl テーブルのコピーであるが、ルックアップ テーブルからの複数の列の一致に基づいて GLACCT 列が追加された出力テーブルを作成したいと考えています。
ロジックは次のとおりです。GLAccount 列が null の場合は、ルックアップ テーブル (GLacctMap) から一致するアカウントを取得します。それ以外の場合は、新しい列に 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 <- apply(currdld, 1, function(x) findgl )
}
PEDLD <- load_details(currdld)
次のエラーが表示されます: IBCO Spotfire Statistics Services がエラーを返しました:フレーム'。