Muchas gracias. Es perfecto.
Ya lo había conseguido con:
data.frame3 <- data.frame2
data.frame3$Col1 <- rep(0,length(data.frame2$Anho))
for (i in 1:length(data.frame1$Col1)
data.frame3$Col1[which(data.frame3$Anho==data.frame1$Anho[i])]<-data.frame1$Col1[i]
Pero como en realidad data.frame1 tiene muchas columnas que quería
expandir en data.frame3, tenía que repetirlo para columna.
merge es perfecto, me lo hace con todas y después solo tengo que borrar
alguna sobrante (pocas).
Muchas gracias.
El 18/07/12 08:27, José Luis Cañadas escribió:> Hola.
>
> ¿Qué tal usando merge?
>
> data.frame3 <-
merge(data.frame1,data.frame2,by="Anho",all.y=TRUE)
>
> Saludos
>
> El 18/07/12 00:42, José Trujillo escribió:
>> Esta noche ando un poco espeso y no veo fácil la cuestión:
>>
>>
>> Tengo un data.frame del tipo:
>>
>> data.frame1
>>
>> Anho, Col1
>> 1978, 19
>> 1979, 21
>> 1980, 18
>> ...
>> Unas 30 filas una por año.
>>
>>
>> Y otro del tipo
>>
>> data.frame2
>>
>> Ind, Anho, Col2
>> 001, 1978, 101
>> 002, 1978, 110
>> ... ... ...
>> 110, 1979, 107
>> ... ... ..
>> Unas 500 filas
>>
>>
>> Me gustaría agregar la Col1 al segundo data.frame de modo que para
>> cada ind tuviese su col1:
>>
>> data.frame3
>>
>> Ind, Anho, Col2, Col1
>> 001, 1978, 101, 19
>> 002, 1978, 110, 19
>> ... ... ...
>> 110, 1979, 107, 21
>> ... ... ..
>> Unas 500 filas
>>
>>
>> He intentado decirle que tome del data.frame1 el valor utilizando
>> como referencia el Anho, pero no lo hago bien:
>>
>> data.frame3 <- data.frame2
>> data.frame3$Col1 <-
data.frame1$Col1[data.frame1$Anho==data.frame2$Anho]
>>
>> ¿Alguna amable sugerencia?
>>
>> Muchas gracias en todo caso.
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
--
_____---^---_____
Univ. de Extremadura
Dept. Matemáticas.
Despacho B29
Tf: + 34 924 289 300
Ext. 86823