[R-br] Converter informações de linhas duplicadas em colunas

Roney Fraga Souza roneyfraga em gmail.com
Quarta Agosto 3 20:20:02 BRT 2011


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


Mais detalhes sobre a lista de discussão R-br