Caros,

Estou com um problema que não consegui resolver, caso alguém saiba um caminho
para solucioná-lo será uma grande ajuda.

Vamos lá, no data.frame (inv):
inv <- data.frame(              
                seq=c(1,1,1,1,1,1,1,2,2,2,2,2,2),
                dv=c(9,9,9,9,9,9,9,7,7,7,7,7,7),
                dom=c(1,1,2,2,2,4,4,2,2,3,3,4,4),
                veiculo=c(301,101,201,101,301,401,101,101,301,301,101,401,201),
                qtde=c(1,2,2,2,1,1,4,1,1,3,1,2,3),
                
ano=c(2002,2008,1993,2007,1993,2003,2000,2008,2007,2000,2003,2005,1994),
                moto_bic=rep(0,13),
                carro=rep(0,13),
                tt_vei=rep(0,13),
                ano_m=rep(0,13))

para facilitar a visualização,

seq dv dom veiculo qtde  ano  moto_bic carro tt_vei ano_m
 1      9   1           301     1   2002      0          0      0     0
 1      9   1           101     2   2008      0          0              0     0
 1      9   2           201     2   1993      0          0              0     0
 1      9   2           101     2   2007      0          0              0     0
 1      9   2           301     1   1993      0          0              0     0
 1      9   4           401     1   2003      0          0              0     0
 1      9   4           101     4   2000      0          0              0     0
 2      7   2           101     1   2008      0          0              0     0
 2      7   2           301     1   2007      0          0              0     0
 2      7   3           301     3   2000      0          0              0     0
 2      7   3           101     1   2003      0          0              0     0
 2      7   4           401     2   2005      0          0              0     0
 2      7   4           201     3   1994      0          0              0     0

temos informações de  residências e veículos, as residencias são determinadas
por combinações das variáveis (seq dv e dom), assim, a sequencia 1 9 1 indica
uma residencia, e a combinação 1 9 2 outra residencia, por fim, temos a
residencia de número 2 7 4. A variável veiculo representa os veículos de cada
residência, sendo:
101 bicicleta
201 moto
301 carro
401 outros veículos
Como em uma casa podem existir vários veículos, as informações que definem uma
residencia (seq dv e dom) foram repetidas ao longa das linhas. Exemplo, na 
residência
2 7 2 tem uma bicicleta e um carro, cada um veículo em uma linha. A variável 
qtde  
indica quantos veículos de determinado tipo existe em uma residencia e a
variável ano indica o ano de fabricação do veículo.
Meu objetivo principal e dispor as informações dos veículos em novas colunas, de
modo que elimine a duplicidade das residencias e ao mesmo tempo não perca
informações sobre os veículos. O resultado final que busco seria:

seq dv dom moto_bic carro tt_vei ano_m
 1      9     1       2          1              3       2006
 1      9     2       4          1              5       1998
 1      9     4       4          0              5       2000
 2      7     2       1          1              2       2008
 2      7     3       1          3              4       2002
 2      7     4       3          0              5       1998

Para chegar no resultado acima é necessário,
na variável moto_bic:
i) obter a quantidade de motos e de bicicletas da respectiva residencia

na variável carro:
ii) informar a quantidade de carros da respectiva residencia

na variável tt_vei:
iii) informar o total de veículos da residencia, valendo notar que como existe
outros veículos, apenas a soma das variáveis moto_bic com carro não é suficiente

na variável ano_m:
iv) informar o ano médio dos veículos de cada residencia

v) por fim, é necessário eliminar as residencias duplicadas.

Obs.: o data.frame (inv) criado para exemplificar o problema  é pequeno, mas 
chego a 
utilizar data.frames com mais de 1 milhão de linhas.


Desde já grato

Roney
_______________________________________________
R-br mailing list
[email protected]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código 
mínimo reproduzível.

Responder a