Salut,
Je voudrais créer une colonne de valeurs à partir d'une équation basée sur un groupe de "cod" particulier. Sur SAS, j'ai réussi à le faire comme ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| data WORK.DONNE;
SET work.DONNE;
IF Cod="A01" THEN ValueA =(((value)*(CFOP="5101"))-((value)*(CFOP="1201"))+((value)*(CFOP="6101"))-((value)*(CFOP="2201")));
IF Cod="A02" THEN ValueA =(((value)*(CFOP="5103")) + ((value)*(CFOP="6103")));
IF Cod="A03" THEN ValueA =(((value)*(CFOP="5105")) + ((value)*(CFOP="6105")));
IF Cod="A04" THEN ValueA =((value)*(CFOP="6107"));
IF Cod="A05" THEN ValueA =(((value)*(CFOP="5109"))-((value)*(CFOP="1203"))+((value)*(CFOP="6109"))-((value)*(CFOP="2203")));
IF Cod="A06" THEN ValueA =(((value)*(CFOP="5111"))+((value)*(CFOP="6111")));
IF Cod="A07" THEN ValueA =(((value)*(CFOP="5113"))+((value)*(CFOP="6113")));
IF Cod="A08" THEN ValueA =(((value)*(CFOP="5116"))+((value)*(CFOP="6116")));
IF Cod="A09" THEN ValueA =(((value)*(CFOP="5118"))+((value)*(CFOP="6118")));
IF Cod="A10" THEN ValueA =(((value)*(CFOP="5122"))+((value)*(CFOP="6122")));
IF Cod="A11" THEN ValueA =(((value)*(CFOP="5401"))-((value)*(CFOP="1410"))+((value)*(CFOP="6401"))-((value)*(CFOP="2410")));
IF Cod="A12" THEN ValueA=(((value)*(CFOP="5402"))+((value)*(CFOP="6402")));
RUN; |
Que dois-je faire pour y arriver avec R ?
Un autre problème, c'est que j'ai une base avec 10 millions d'observations.
Un exemple, issu des données :
NCM_atual;UF;CNAE_atual;CFOP;Cod;Value;Tipo_CNAE
1011010;BA;47.6;6102;A01;26.84;45x_a_47x
1011010;BA;47.6;6102;A01;21.84;45x_a_47x
1011010;BA;47.4;5102;A01;309.40;45x_a_47x
1011010;BA;47.4;5102;A01;306.40;45x_a_47x
1011010;BA;15.2;6108;A02;10.00;Outras
1011010;BA;15.2;6108;A02;0.00;Outras
1011010;AC;47.4;6102;A03;1000.00;45x_a_47x
1011010;AC;47.4;6102;A03;0.00;45x_a_47x
1011010;BA;47.1;5102;A04;33.82;45x_a_47x
1011010;BA;47.1;5102;A05;633.82;45x_a_47x
1011010;BA;47.8;6108;A05;0.00;45x_a_47x
1011010;BA;47.8;6108;A05;450.00;45x_a_47x
1011010;BA;51.1;6552;A00;56.00;Outras
1011010;BA;51.1;6552;A00;0.00;Outras
1011010;AM;30.9;5102;A06;937.00;Outras
1011010;AM;30.9;5102;A07;37.00;Outras
1011010;AM;41.2;5102;A07;45.00;Outras
1011010;AM;41.2;5102;A08;98.00;Outras
1011010;BA;47.4;6551;A08;0.00;45x_a_47x
1011010;BA;47.4;6551;A09;560.00;45x_a_47x
1011010;CE;42.1;6554;A00;900.00;Outras
1011010;CE;42.1;6554;A00;590000.00;Outras
1011010;BA;47.1;6102;A10;145.00;45x_a_47x
1011010;BA;47.1;6102;A11;14.00;45x_a_47x
1011010;CE;94.9;6101;A11;987.00;Outras
1011010;CE;94.9;6101;A11;0.00;Outras
1011010;BA;NA;6116;A11;11040.00;NA
1011010;BA;NA;6116;A12;11040.00;NA
1011010;BA;47.6;5152;A00;128.40;45x_a_47x
1011010;BA;47.6;5152;NA;128.40;
Je vous remercie
Partager