Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用;内;在R?_R - Fatal编程技术网

如何使用;内;在R?

如何使用;内;在R?,r,R,我一直在努力寻找一种在由数据构建的环境中计算R表达式的方法。我有一个数据帧: head(DATA1) COD_CLI ENDEUD_FINAL 1 01002901 Mediana Empresa 2 01002932 No Sobreendeudado 3 04203409 No Sobreendeudado ... 我尝试完成另一个数据(数据2): DATA2大于DATA1,如果两个数据中的COD_CLI/COD_CLI_W相同,

我一直在努力寻找一种在由数据构建的环境中计算R表达式的方法。我有一个数据帧:

    head(DATA1) 
    COD_CLI      ENDEUD_FINAL
    1 01002901 Mediana Empresa
    2 01002932 No Sobreendeudado
    3 04203409 No Sobreendeudado
    ...
我尝试完成另一个数据(数据2):

DATA2大于DATA1,如果两个数据中的COD_CLI/COD_CLI_W相同,则我取DATA1的第二列,如果不是,则我必须评估另一个数据帧“wallet”:

现在我运行的代码是:

    DATA2 <- within(DATA2,{
    CALIF_RCD <- ifelse(COD_CLI_W %in% DATA1$COD_CLI,DATA1$ENDEUD_FINAL[which(DATA1$COD_CLI %in% COD_CLI_W)],
    ifelse(wallet$TIPO_DE_CREDITO[which(wallet$COD_CLI %in% COD_CLI_W)[1]] == "08.-MEDIANA EMPRESA","Mediana Empresa",
    ifelse(wallet$NUM_ENT[which(wallet$COD_CLI %in% COD_CLI_W)[1]]<5,"No Sobreendeudado","Sobreendeudado")))
    }
    )

DATA2我采用了第一种使用“合并”的方法:


DATA3听起来好像你可以只
merge
而不是编写嵌套的
ifelse
I试图这样做,但我不知道正确的方法。DATA2包含DATA1的所有信息,并且更大。我将评估仅在DATA2中的元素,但我不知道如何使用“merge”或任何其他方法创建此子集。
    > str(wallet)
    'data.frame':   81101 obs. of  8 variables:
    $ COD_CREDITO     : chr  "0040410166104" "00000363393"          "0060030164135" "004023854M" ...
    $ COD_CLI         : chr  "00402037" "00166750" "00178607" "40097700" ...
    $ TIPO_DE_CREDITO : chr  "12.-CONSUMO NO REVOLVENTE" "10.-MICROEMPRESA" "10.-MICROEMPRESA" "10.-MICROEMPRESA" ...
    $ SITUACION_SAFI  : chr  "CASTIGADO" "CASTIGADO" "CASTIGADO" "CASTIGADO" ...
    $ COD_TIP_PRESTAMO: chr  "0747" "0748" "0748" "0747" ...
    $ ATR_SOL         : num  0 0 0 0 0 0 0 0 0 0 ...
    $ CAP_SOL         : num  313.37 3.16 1670.51 3010 2327.71 ...
    $ NUM_ENT         : num  3 1 2 1 1 3 2 1 4 2 ...
    DATA2 <- within(DATA2,{
    CALIF_RCD <- ifelse(COD_CLI_W %in% DATA1$COD_CLI,DATA1$ENDEUD_FINAL[which(DATA1$COD_CLI %in% COD_CLI_W)],
    ifelse(wallet$TIPO_DE_CREDITO[which(wallet$COD_CLI %in% COD_CLI_W)[1]] == "08.-MEDIANA EMPRESA","Mediana Empresa",
    ifelse(wallet$NUM_ENT[which(wallet$COD_CLI %in% COD_CLI_W)[1]]<5,"No Sobreendeudado","Sobreendeudado")))
    }
    )
    DATA3 <- merge(DATA1, DATA2, by.x = "COD_CLI", by.y = "COD_CLI_W", all.y=TRUE)
    DATA3 <- DATA3[!complete.cases(DATA3),]
    w = NULL
    for(i in 1:length(DATA3$ENDEUD_FINAL))
    {
       w = which(wallet$COD_CLI %in% DATA3$COD_CLI[i])[1]
       DATA3$ENDEUD_FINAL[i] <- ifelse(wallet$TIPO_DE_CREDITO[w] == "08.-MEDIANA EMPRESA","Mediana Empresa",
       ifelse(wallet$NUM_ENT[w]<5,"No Sobreendeudado","Sobreendeudado"
       ))
    }
       DATA2 <- rbind(DATA1, DATA3)