si se tiene un data.table (DT), supongamos de 100 filas por 3 columnas de datos numericos, como puedo hacer para obtener el correspondiente valor de la columna 1 si busco, por ejemplo, el maximo de la columna 2 agrupado por la columna 3 ? para buscar el maximo de la columna 2 escribo. DT[ , max(c2), by=c3 ] muchas gracias, saludos, eric. -- Forest Engineer Master in Environmental and Natural Resource Economics Ph.D. student in Sciences of Natural Resources at La Frontera University Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo.
javier.ruben.marcuzzi en gmail.com
2017-Jan-06 12:23 UTC
[R-es] que tal comunidad, una pregunta del paquete data.table
Estimado Eric Creo que es más simple si lo piensa de otra forma, equivalente, yo plantearía en tener las filas (para luego buscar la primer columna). Preguntaría: Agrupar por columna 3, A estos Cuándo el valor máximo de la columna 2. De esta forma cuándo tenga 40 columnas en lugar de 3 no tendría problemas con el algoritmo, solo tendría que seleccionar el valor de la columna que desea (porque tendría todas). Ahora, si leo lo que usted escribe DT[, max(c2), by=c3], iría al mismo razonamiento que yo tengo, pero ¿porqué no le funciona? ¿Puede enviar un ejemplo reproducible? Pienso que puede ser que tenga el resultado en sus manos, pero no se dio cuenta. Javier Rubén Marcuzzi De: eric Enviado: viernes, 6 de enero de 2017 0:38 Para: Lista R Asunto: [R-es] que tal comunidad, una pregunta del paquete data.table si se tiene un data.table (DT), supongamos de 100 filas por 3 columnas de datos numericos, como puedo hacer para obtener el correspondiente valor de la columna 1 si busco, por ejemplo, el maximo de la columna 2 agrupado por la columna 3 ? para buscar el maximo de la columna 2 escribo. DT[ , max(c2), by=c3 ] muchas gracias, saludos, eric. -- Forest Engineer Master in Environmental and Natural Resource Economics Ph.D. student in Sciences of Natural Resources at La Frontera University Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo. _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Carlos Ortega
2017-Jan-06 14:07 UTC
[R-es] que tal comunidad, una pregunta del paquete data.table
Hola, Una forma de hacerlo es esta: #------------------ library(data.table) set.seed(22) DT <- data.table( x = rnorm(100), y = rnorm(100), z = sample(1:5, 100, replace = TRUE)) DT[, Max := max(y), by=z][y == Max] #------------------ Que produce este resultado:> DT[, Max := max(y), by=z][y == Max]x y z Max 1: -0.9221536 1.179189 2 1.179189 2: 2.0029422 1.607435 5 1.607435 3: 0.4413632 1.648292 4 1.648292 4: 0.2195311 1.003396 3 1.003396 5: -0.7727382 1.832411 1 1.832411 Saludos, Carlos Ortega www.qualityexcellence.es El 6 de enero de 2017, 4:38, eric <ericconchamunoz en gmail.com> escribió:> si se tiene un data.table (DT), supongamos de 100 filas por 3 columnas de > datos numericos, como puedo hacer para obtener el correspondiente valor de > la columna 1 si busco, por ejemplo, el maximo de la columna 2 agrupado por > la columna 3 ? > > para buscar el maximo de la columna 2 escribo. > > DT[ , max(c2), by=c3 ] > > muchas gracias, > > saludos, eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green city > standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con algunos > lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2017-Jan-06 15:38 UTC
[R-es] que tal comunidad, una pregunta del paquete data.table
Lo que quieres es un sort y, luego, un tail. Abundando en el ejemplo de Carlos Ortega, library(data.table) set.seed(22) tmp <- data.table(x = rnorm(100), y = rnorm(100), z = sample(1:5, 100, replace = TRUE)) setkeyv(tmp, c("z", "y")) tmp[, tail(.SD, 1), by=z] Así puedes sacar los N mayores, etc. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 6 de enero de 2017, 4:38, eric <ericconchamunoz en gmail.com> escribió:> si se tiene un data.table (DT), supongamos de 100 filas por 3 columnas de > datos numericos, como puedo hacer para obtener el correspondiente valor de > la columna 1 si busco, por ejemplo, el maximo de la columna 2 agrupado por > la columna 3 ? > > para buscar el maximo de la columna 2 escribo. > > DT[ , max(c2), by=c3 ] > > muchas gracias, > > saludos, eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green city > standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con algunos > lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Muchas gracias Carlos, Carlos y Javier, vamos a probar las opciones. Saludos, Eric. On 01/06/2017 12:38 PM, Carlos J. Gil Bellosta wrote:> Lo que quieres es un sort y, luego, un tail. Abundando en el ejemplo de > Carlos Ortega, > > library(data.table) > set.seed(22) > > tmp <- data.table(x = rnorm(100), y = rnorm(100), z = sample(1:5, 100, > replace = TRUE)) > > setkeyv(tmp, c("z", "y")) > tmp[, tail(.SD, 1), by=z] > > Así puedes sacar los N mayores, etc. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El 6 de enero de 2017, 4:38, eric <ericconchamunoz en gmail.com > <mailto:ericconchamunoz en gmail.com>> escribió: > > si se tiene un data.table (DT), supongamos de 100 filas por 3 > columnas de datos numericos, como puedo hacer para obtener el > correspondiente valor de la columna 1 si busco, por ejemplo, el > maximo de la columna 2 agrupado por la columna 3 ? > > para buscar el maximo de la columna 2 escribo. > > DT[ , max(c2), by=c3 ] > > muchas gracias, > > saludos, eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green > city standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con > algunos lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > <https://stat.ethz.ch/mailman/listinfo/r-help-es> > >-- Forest Engineer Master in Environmental and Natural Resource Economics Ph.D. student in Sciences of Natural Resources at La Frontera University Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo.