Сумма между строками и создание новых переменных условно в R - PullRequest
0 голосов
/ 25 сентября 2018

У меня большой data.frame, и я хочу сделать в нем две конкретные модификации, и я понятия не имею, как.Вот как это выглядит сейчас:

      cod             Programa2  ano ValordaOperacao2 ValorDesembolsado2
1  310010               PROVIAS 2009         300000.0           300000.0
2  310020               PROVIAS 2007         824988.8           824988.8
3  420010               PROVIAS 2010        1250000.0          1250000.0
4  420010     CAMINHO DA ESCOLA 2008         598900.0           598900.0
5  310030               PROVIAS 2014         820000.0           820000.0
6  310040               PROVIAS 2012         660000.0           660000.0
7  310040     CAMINHO DA ESCOLA 2012         314150.0           314150.0
8  240010     CAMINHO DA ESCOLA 2013         226840.0           226840.0
9  240010     CAMINHO DA ESCOLA 2012         366840.0           140000.0
34 430045     CAMINHO DA ESCOLA 2008         413450.0           413450.0
35 430045               PROVIAS 2009         770000.0           770000.0
36 520030               PROVIAS 2015        1250000.0          1250000.0
37 310160               PROVIAS 2007         116728.3           116728.3
38 310160     CAMINHO DA ESCOLA 2008         684000.0           684000.0
39 310160               PROVIAS 2007          42600.0            42600.0
40 310160               PROVIAS 2007        1492000.0          1492000.0
41 310160               PROVIAS 2007        1316971.7          1316971.7

Я считаю, что наиболее важными переменными здесь являются «cod» и «ano».Первая модификация, которую я хочу, заключается в следующем: для того же самого «треска», который у нас есть разные «Programa2» в том же «ano», создайте новые переменные с именами «Programa3», «ValordaOperacao3» и «ValorDesembolsado3», связанные с теми же строками.Например: в строках 6 и 7 у нас есть такие ошибки :

      cod             Programa2  ano ValordaOperacao2 ValorDesembolsado2
6  310040               PROVIAS 2012         660000.0           660000.0
7  310040     CAMINHO DA ESCOLA 2012         314150.0           314150.0

, и я хочу преобразовать вот так для всех ошибок в этих data.frame:

      cod             Programa2  ano ValordaOperacao2 ValorDesembolsado2             Programa3  ValordaOperacao3 ValorDesembolsado3
6  310040               PROVIAS 2012         660000.0           660000.0 CAMINHO DA ESCOLA         314150.0           314150.0

Второе, что я хочу изменить, я считаю, проще.На самом деле, я почти сделал это в stata, но в R у меня возникли некоторые проблемы, чтобы думать одним способом.Есть некоторые «трески», которые имеют ту же «Programa2» для того же «Ano», что я хочу сделать в этом случае, это превратить эти две или три строки в одну, делая СУММ «ValordaOperacao2» и «ValorDesemvolsado2»,Например, в строках с 37 по 41 у меня есть:

     cod             Programa2  ano ValordaOperacao2 ValorDesembolsado2
37 310160               PROVIAS 2007         116728.3           116728.3
38 310160     CAMINHO DA ESCOLA 2008         684000.0           684000.0
39 310160               PROVIAS 2007          42600.0            42600.0
40 310160               PROVIAS 2007        1492000.0          1492000.0
41 310160               PROVIAS 2007        1316971.7          1316971.7

И я хочу что-то подобное: строка 37 представляет собой сумму 37 + 39 + 40 + 41:

          cod         Programa2  ano ValordaOperacao2 ValorDesembolsado2
    37 310160           PROVIAS 2007        2968300.0          2968300.0
    38 310160 CAMINHO DA ESCOLA 2008         684000.0           684000.0

Ps: когда «Programa2» одинакова для того же «треска», нет проблем, если «Ano» отличается.Кто-то может мне помочь?Спасибо

...