Hola a todos. Ya he escrito sobre esto pero vuelvo a no ser capaz de resolver una cosa Tengo este archivo año mes fecha puerto barco origen arte 2007 enero 2007-01-04 Ribeira juan Norte PAREJA 2007 enero 2007-01-04 Ribeira luis -Norte BETA 2007 enero 2007-01-04 Ribeira pedro Norte PAREJA 2007 enero 2007-01-04 Ribeira marcosNorte BACA 2007 enero 2007-01-04 Ribeira nolo Norte GNR 2007 enero 2007-01-04 Ribeira bein Norte TNF p.desem talla ejemplares 1485 30 6 1485 31 18 1485 32 18 1485 33 12 1485 57 12 1485 35 6 Puedo hallar la Media Ponderada de la Talla en funcion de los ejemplares (weighted.mean (talla, ejemplares)) Pero no soy capaz de hallar la media ponderada en funcion del arte Tal que me quede algo asi BACA BETA PAREJA 40.12 28.66 42.27 Esto me sale con tapply(talla+ejemplares,arte, weighted.mean, na.rm=TRUE) Lo que pasa es que esto es la media y yo quiero la media ponderada Bueno, gracias por leerme Saludos Jocedo [[alternative HTML version deleted]]
Hola a todos: Aprovecho para presentarme ya que soy nuevo en la lista (llevo un tiempo «solo leyendo»). Me llamo Rubén y llevo utilizando R aproximadamente desde Enero y no en profundidad. Encontré esta lista buscando resolver algunos problemas que tenía y, bueno, aquí estoy. El 29/07/11 10:53, jose cebrian escribió:> Hola a todos. > Ya he escrito sobre esto pero vuelvo a no ser capaz de resolver una cosa > > Tengo este archivo > > > > año mes fecha puerto barco origen arte > > 2007 enero 2007-01-04 Ribeira juan Norte PAREJA > 2007 enero 2007-01-04 Ribeira luis -Norte BETA > 2007 enero 2007-01-04 Ribeira pedro Norte PAREJA > 2007 enero 2007-01-04 Ribeira marcosNorte BACA > 2007 enero 2007-01-04 Ribeira nolo Norte GNR > 2007 enero 2007-01-04 Ribeira bein Norte TNF > > p.desem talla ejemplares > 1485 30 6 > 1485 31 18 > 1485 32 18 > 1485 33 12 > 1485 57 12 > 1485 35 6 > > > > Puedo hallar la Media Ponderada de la Talla en funcion de los ejemplares (weighted.mean (talla, ejemplares)) > Pero no soy capaz de hallar la media ponderada en funcion del arte > > Tal que me quede algo asi > > BACA BETA PAREJA > 40.12 28.66 42.27 > > Esto me sale con tapply(talla+ejemplares,arte, weighted.mean, na.rm=TRUE) > > > Lo que pasa es que esto es la media y yo quiero la media ponderadaCreo que lo puedes hacer así, suponiendo que los datos los tienes en un «data.frame» que lo voy a llamar prueba: for (i in length(levels(prueba$arte))) { z = prueba[which(prueba$arte == levels(prueba$arte)[i]),9:10] weigthed.mean(z[,1],z[,2]) } Seguro que se puede hacer con *apply pero todavía no me aclaro mucho con ellas y ahora llevo unas semanas que no toco R por lo que estoy desentrenado. ^_^> > Bueno, gracias por leerme > Saludos > JocedoEspero que haya ayudado en algo y no haberlo entendido todo al revés. Salud y Revolución. Lobo. -- Libertad es poder elegir en cualquier momento. Ahora yo elijo GNU/Linux, para no atar mis manos con las cadenas del soft propietario. --------- Desde El Ejido, en Almería, usuario registrado Linux #294013 counter.li.org
Hola José. A mí no me queda muy clara la pregunta. La frase:> Pero no soy capaz de hallar la media ponderada en funcion del arteme confunde un poco. A ver, la media, cuando la calculas ponderada, te retornará un valor (estoy pensando en voz alta). Y esta se calcula con un vector que está pesado por otro vector (numérico, naturalmente) de igual tamaño. Lo que se me ocurre es que estás pidiendo la media estratificada a través de cada valor del factor arte, que, me parece, es otra cosa. Si este es el caso, pienso que una solución (ojalá alguien tenga una más elegante) puede ser crear un conjunto de datos que no esté resumido y luego calcular la media a través de arte. Siendo 'datos':> datosarte talla ejemplares 1 pareja 30 6 2 beta 31 18 3 pareja 32 18 4 baca 33 12 5 gnr 57 12 6 tnf 35 6 quizá pueda servir: datos2<-c() for( j in 1:nrow(datos)) { i<-1 while(i<=ejemplares[j]) { datos2<-rbind(datos2,datos[j,]) i<-i+1 } } (comprobar con:> mean(datos2$talla)[1] 36.16667> weighted.mean(datos$talla,datos$ejemplares)[1] 36.16667> )y luego> by(datos2$talla,datos2$arte,mean)que te dará la media estratificada por arte. Seguro se puede pulir la salida, pero eso es harina de otro costal... Salud. 2011/7/29 <r-help-es-request en r-project.org>> > Envíe los mensajes para la lista R-help-es a > r-help-es en r-project.org > > Para subscribirse o anular su subscripción a través de la WEB > stat.ethz.ch/mailman/listinfo/r-help-es > > O por correo electrónico, enviando un mensaje con el texto "help" en > el asunto (subject) o en el cuerpo a: > r-help-es-request en r-project.org > > Puede contactar con el responsable de la lista escribiendo a: > r-help-es-owner en r-project.org > > Si responde a algún contenido de este mensaje, por favor, edite la > linea del asunto (subject) para que el texto sea mas especifico que: > "Re: Contents of R-help-es digest...". Además, por favor, incluya en > la respuesta sólo aquellas partes del mensaje a las que está > respondiendo. > > > Asuntos del día: > > 1. Media Ponderada (jose cebrian) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Fri, 29 Jul 2011 09:53:45 +0100 (BST) > From: jose cebrian <pepeceb en yahoo.es> > To: "R-help-es en r-project.org" <R-help-es en r-project.org> > Subject: [R-es] Media Ponderada > Message-ID: > <1311929625.95075.YahooMailNeo en web29608.mail.ird.yahoo.com> > Content-Type: text/plain > > Hola a todos. > Ya he escrito sobre esto pero vuelvo a no ser capaz de resolver una cosa > > Tengo este archivo > > > > año mes fecha puerto barco origen arte > > 2007 enero 2007-01-04 Ribeira juan Norte PAREJA > 2007 enero 2007-01-04 Ribeira luis -Norte BETA > 2007 enero 2007-01-04 Ribeira pedro Norte PAREJA > 2007 enero 2007-01-04 Ribeira marcosNorte BACA > 2007 enero 2007-01-04 Ribeira nolo Norte GNR > 2007 enero 2007-01-04 Ribeira bein Norte TNF > > p.desem talla ejemplares > 1485 30 6 > 1485 31 18 > 1485 32 18 > 1485 33 12 > 1485 57 12 > 1485 35 6 > > > > Puedo hallar la Media Ponderada de la Talla en funcion de los ejemplares (weighted.mean (talla, ejemplares)) > Pero no soy capaz de hallar la media ponderada en funcion del arte > > Tal que me quede algo asi > > BACA BETA PAREJA > 40.12 28.66 42.27 > > Esto me sale con tapply(talla+ejemplares,arte, weighted.mean, na.rm=TRUE) > > > Lo que pasa es que esto es la media y yo quiero la media ponderada > > Bueno, gracias por leerme > Saludos > Jocedo > > [[alternative HTML version deleted]] > > > > ------------------------------ > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > stat.ethz.ch/mailman/listinfo/r-help-es > > > Fin de Resumen de R-help-es, Vol 29, Envío 30 > *********************************************-- «But Gwindor answered: 'The doom lies in yourself, not in your name.'» JRR Tolkien
Gracias por vuestras respuestas. Al final, este script me resolvió estupendamente:> library(plyr)> ddply(Datos,"arte",function(X) data.frame(wmn=weighted.mean(X$talla,+ X$ejemplares), + mn=mean(X$talla))) arte wmn mn 1 BACA 33.362 40.120 2 BETA 26.566 28.654 3 PAREJA 38.9289 42.278 De esta forma obtengo una media ponderada de la talla (en funcion de los ejemplares) para cada tipo de arte, y tambien la media aritmetica. De: jose cebrian <pepeceb@yahoo.es> Para: "R-help-es@r-project.org" <R-help-es@r-project.org> Enviado: viernes 29 de julio de 2011 10:53 Asunto: [R-es] Media Ponderada Hola a todos. Ya he escrito sobre esto pero vuelvo a no ser capaz de resolver una cosa Tengo este archivo año mes fecha puerto barco origen arte 2007 enero 2007-01-04 Ribeira juan Norte PAREJA 2007 enero 2007-01-04 Ribeira luis -Norte BETA 2007 enero 2007-01-04 Ribeira pedro Norte PAREJA 2007 enero 2007-01-04 Ribeira marcosNorte BACA 2007 enero 2007-01-04 Ribeira nolo Norte GNR 2007 enero 2007-01-04 Ribeira bein Norte TNF p.desem talla ejemplares 1485 30 6 1485 31 18 1485 32 18 1485 33 12 1485 57 12 1485 35 6 Puedo hallar la Media Ponderada de la Talla en funcion de los ejemplares (weighted.mean (talla, ejemplares)) Pero no soy capaz de hallar la media ponderada en funcion del arte Tal que me quede algo asi BACA BETA PAREJA 40.12 28.66 42.27 Esto me sale con tapply(talla+ejemplares,arte, weighted.mean, na.rm=TRUE) Lo que pasa es que esto es la media y yo quiero la media ponderada Bueno, gracias por leerme Saludos Jocedo [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Hola a todos, estoy atascado en una sencilla operacion: A B C D Rojo 5 6 8 Verde 6 8 9 Azul 9 8 7 Mi preguntas es sencilla pero no me sale. Yo quiero crear una nueva variable D, con la siguiente funcion: Si A es rojo, D= C*D Si A no es rojo, D = B*D Agradezco la ayuda Jocedo [[alternative HTML version deleted]]
Estimado José Creo que básicamente hay dos formas, una es por programación, utilizando si (if), la otra es filtrando o sacando datos, tipo base de datos, y a ese resultado lo llevas a un data.frame donde podes trabajar fácil con R, o hacer todo con sqldf (R + sqlite3). Hay muchas formas, pero el problema o lo recomendable, sería saber que alternativa es la más adecuada para el siguiente paso. Javier -----Mensaje original----- From: jose cebrian Sent: Thursday, August 04, 2011 8:50 AM To: jose cebrian ; R-help-es en r-project.org Subject: [R-es] Operacion sencilla Hola a todos, estoy atascado en una sencilla operacion: A B C D Rojo 5 6 8 Verde 6 8 9 Azul 9 8 7 Mi preguntas es sencilla pero no me sale. Yo quiero crear una nueva variable D, con la siguiente funcion: Si A es rojo, D= C*D Si A no es rojo, D = B*D Agradezco la ayuda Jocedo [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org stat.ethz.ch/mailman/listinfo/r-help-es
Hola, La nueva variable a crear entiendo que ha de ser "F", ya que "D" ya existe en tu ejemplo. Con esta premisa, una solución posible es esta -utilizando la función ifelse():> > dat.dfA B C D 1 Rojo 5 6 8 2 Verde 6 7 9 3 Azul 9 8 7> ifelse(dat.df$A=="Rojo", dat.df$C * dat.df$D, dat.df$B * dat.df$D)[1] 48 54 63>Saludos, Carlos Ortega qualityexcellence.es 2011/8/4 jose cebrian <pepeceb@yahoo.es>> > > Hola a todos, estoy atascado en una sencilla operacion: > > > > A B C D > Rojo 5 6 8 > Verde 6 8 9 > > Azul 9 8 7 > > > Mi preguntas es sencilla pero no me sale. > Yo quiero crear una nueva variable D, con la siguiente funcion: > Si A es rojo, D= C*D > Si A no es rojo, D = B*D > > Agradezco la ayuda > > > Jocedo > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
head (p) zona cantidad porcentaje A 4904453 9 7.92 B 1663860.3 2.6875378917 C 5241807. 08.4667910363 D 168759.5 0.2725883756 E 319703.5 0.5163995854 F 128.4 0.0002067511 ________________________________ Buenos dias a todos. Tengo esta sencilla tabla. Lo que trato es de transformar los nombres de la variable zona cuyo porcentaje sea menor de 2 y agruparlos todos ellos bajo el nombre de OTROS. Trate de hacerlo con ifelse , pero no me sale. Gracias [[alternative HTML version deleted]]
Hola Yo lo realizo de la siguiente forma: algunos_menores_no_1 <- algunos_menores[algunos_menores$n_Cosa>1,] algunos_menores es un data.frame, n_Cosa es la columna de la cual quiero los valores > < == etc. Javier -----Mensaje original----- From: jose cebrian Sent: Tuesday, November 08, 2011 6:36 AM To: Carlos Ortega Cc: R-help-es en r-project.org Subject: [R-es] ifelse ? head (p) zona cantidad porcentaje A 4904453 9 7.92 B 1663860.3 2.6875378917 C 5241807. 08.4667910363 D 168759.5 0.2725883756 E 319703.5 0.5163995854 F 128.4 0.0002067511 ________________________________ Buenos dias a todos. Tengo esta sencilla tabla. Lo que trato es de transformar los nombres de la variable zona cuyo porcentaje sea menor de 2 y agruparlos todos ellos bajo el nombre de OTROS. Trate de hacerlo con ifelse , pero no me sale. Gracias [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org stat.ethz.ch/mailman/listinfo/r-help-es
Una sugerencia, cran.r-project.org/doc/contrib/grafi3.pdf página 49 -----Mensaje original----- From: jose cebrian Sent: Tuesday, November 08, 2011 6:36 AM To: Carlos Ortega Cc: R-help-es en r-project.org Subject: [R-es] ifelse ? head (p) zona cantidad porcentaje A 4904453 9 7.92 B 1663860.3 2.6875378917 C 5241807. 08.4667910363 D 168759.5 0.2725883756 E 319703.5 0.5163995854 F 128.4 0.0002067511 ________________________________ Buenos dias a todos. Tengo esta sencilla tabla. Lo que trato es de transformar los nombres de la variable zona cuyo porcentaje sea menor de 2 y agruparlos todos ellos bajo el nombre de OTROS. Trate de hacerlo con ifelse , pero no me sale. Gracias [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org stat.ethz.ch/mailman/listinfo/r-help-es
Hola, Utilizando tus mismos datos: lin.dat<-"zona cantidad porcentaje A 4904453.9 7.92 B 1663860.3 2.6875378917 C 5241807.0 8.4667910363 D 168759.5 0.2725883756 E 319703.5 0.5163995854 F 128.4 0.0002067511 " t.con<-textConnection(lin.dat) dat.in<-read.table(t.con, header=T, as.is=T) close(t.con) dat.in$zona[dat.in$porcentaje<2]<-c("OT") dat.in> dat.in zona cantidad porcentaje1 A 4904453.9 7.9200000000 2 B 1663860.3 2.6875378917 3 C 5241807.0 8.4667910363 4 OT 168759.5 0.2725883756 5 OT 319703.5 0.5163995854 6 OT 128.4 0.0002067511 Saludos, Carlos Ortega qualityexcellence.es El 8 de noviembre de 2011 10:46, Marcuzzi, Javier Rubén < javier.ruben.marcuzzi@gmail.com> escribió:> Hola > > Yo lo realizo de la siguiente forma: > > algunos_menores_no_1 <- algunos_menores[algunos_**menores$n_Cosa>1,] > > algunos_menores es un data.frame, n_Cosa es la columna de la cual quiero > los valores > < == etc. > > Javier > > > > -----Mensaje original----- From: jose cebrian > Sent: Tuesday, November 08, 2011 6:36 AM > To: Carlos Ortega > Cc: R-help-es@r-project.org > Subject: [R-es] ifelse ? > > > > > > head (p) > > > zona cantidad porcentaje > A 4904453 9 7.92 > B 1663860.3 2.6875378917 > C 5241807. 08.4667910363 > D 168759.5 0.2725883756 > E 319703.5 0.5163995854 > F 128.4 0.0002067511 > > > > ______________________________**__ > Buenos dias a todos. > Tengo esta sencilla tabla. > Lo que trato es de transformar los nombres de la variable zona cuyo > porcentaje sea menor de 2 y agruparlos todos ellos bajo el nombre de OTROS. > Trate de hacerlo con ifelse , pero no me sale. > Gracias > > [[alternative HTML version deleted]] > > > > > > > > ______________________________**_________________ > R-help-es mailing list > R-help-es@r-project.org > stat.ethz.ch/mailman/**listinfo/r-help-es<stat.ethz.ch/mailman/listinfo/r-help-es> > > ______________________________**_________________ > R-help-es mailing list > R-help-es@r-project.org > stat.ethz.ch/mailman/**listinfo/r-help-es<stat.ethz.ch/mailman/listinfo/r-help-es> >[[alternative HTML version deleted]]