Jorge Tornero - Listas
2013-Dec-03 13:09 UTC
[R-es] seleccionar columnas de un dataframe mediante variables
Hola a todos: Rediela!! Si hago la prueba con rangoAnalisis<-c(110:120) Funciona!!! Pero como os comenté antes, no. Ojo!!! La idea es que tanto columnaInicial como columnaFinal son números(índices) de columna!!! De hecho, haciendo el str() de estas variables me indica que son del tipo num Un saludo El 03/12/13 13:41, Carlos J. Gil Bellosta escribió:> Hola, ¿qué tal? > > ¿Qué son columnaInicial y columnaFinal? ¿Números? En tal caso, debería > funcionar lo que haces. > > Si no, tienes que convertirlos a números: > > col.ini.num <- which(colnames(datos.original) == columnaInicial) > col.fin.num <- which(colnames(datos.original) == columnaFinal) > > Y entonces sí que puedes crear el rango col.ini.num:col.fin.num. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 3 de diciembre de 2013 13:30, Jorge Tornero - Listas > <jtorlistas en gmail.com> escribió: >> Buenos días a todos: >> >> Para empezar, y como este es mi primer mensaje a la lista, me presentaré. Mi >> nombre es Jorge Tornero y trabajo en el Instituto Español de Oceanografía >> como Ayudante de Investigación. No soy usuario habitual de R pero estoy >> tomando contacto con él de cara a un proyecto en el que ando involucrado. >> >> Mi consulta es: >> >> Me interesaría poder seleccionar columnas de un dataframe, pero empleando >> dos variables como inicio del intervalo y fin. He intentado lo siguiente: >> >> rangoAnalisis<-c(columnaInicial:columnaFinal) >> >> y luego >> >> datos<-datos.original[,rangoAnalisis] >> >> Con sus variantes de paréntesis, etc... sin resultado >> >> ¿Alguna idea? >> >> Muchas gracias y un saludo >> >> Jorge Tornero >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es
Isidro Hidalgo
2013-Dec-03 13:17 UTC
[R-es] seleccionar columnas de un dataframe mediante variables
Chico, me quedo a cuadros. Algún fiera de por aquí te dirá por qué, pero yo a bote pronto no tengo ni idea... Si nos puedes poner el código con el que se originan ese par de variables quizá podamos ver algo... Un saludo Isidro Hidalgo Arellano Observatorio Regional de Empleo D.G. de Desarrollo de Estrategia Económica y Asuntos Europeos Avenida de Irlanda, 14 Tlf.: 925 28 80 98 ihidalgo en jccm.es Consejería de Empleo y Economía http://www.jccm.es> -----Mensaje original----- > De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r- > project.org] En nombre de Jorge Tornero - Listas > Enviado el: martes, 03 de diciembre de 2013 14:09 > Para: Carlos J. Gil Bellosta > CC: r-help-es > Asunto: Re: [R-es] seleccionar columnas de un dataframe mediante > variables > > Hola a todos: > > Rediela!! > > Si hago la prueba con > > rangoAnalisis<-c(110:120) > > Funciona!!! > > Pero como os comenté antes, no. > Ojo!!! > > La idea es que tanto columnaInicial como columnaFinal son > números(índices) de columna!!! De hecho, haciendo el str() de estas > variables me indica que son del tipo num > > Un saludo > > > > > El 03/12/13 13:41, Carlos J. Gil Bellosta escribió: > > Hola, ¿qué tal? > > > > ¿Qué son columnaInicial y columnaFinal? ¿Números? En tal caso, > debería > > funcionar lo que haces. > > > > Si no, tienes que convertirlos a números: > > > > col.ini.num <- which(colnames(datos.original) == columnaInicial) > > col.fin.num <- which(colnames(datos.original) == columnaFinal) > > > > Y entonces sí que puedes crear el rango col.ini.num:col.fin.num. > > > > Un saludo, > > > > Carlos J. Gil Bellosta > > http://www.datanalytics.com > > > > El día 3 de diciembre de 2013 13:30, Jorge Tornero - Listas > > <jtorlistas en gmail.com> escribió: > >> Buenos días a todos: > >> > >> Para empezar, y como este es mi primer mensaje a la lista, me > >> presentaré. Mi nombre es Jorge Tornero y trabajo en el Instituto > >> Español de Oceanografía como Ayudante de Investigación. No soy > >> usuario habitual de R pero estoy tomando contacto con él de cara a > un proyecto en el que ando involucrado. > >> > >> Mi consulta es: > >> > >> Me interesaría poder seleccionar columnas de un dataframe, pero > >> empleando dos variables como inicio del intervalo y fin. He > intentado lo siguiente: > >> > >> rangoAnalisis<-c(columnaInicial:columnaFinal) > >> > >> y luego > >> > >> datos<-datos.original[,rangoAnalisis] > >> > >> Con sus variantes de paréntesis, etc... sin resultado > >> > >> ¿Alguna idea? > >> > >> Muchas gracias y un saludo > >> > >> Jorge Tornero > >> > >> _______________________________________________ > >> 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
Jorge Tornero - Listas
2013-Dec-03 13:17 UTC
[R-es] seleccionar columnas de un dataframe mediante variables
Pues este es el culpable... como soy nuevo en esto, disculpad si las estrategias de creación de datframes, etc. son poco ortodoxas. Y por cierto... esto del slicing con R es un poco... duro library(RPostgreSQL) library(reshape) #CARGA DE DATOS conn<-dbConnect("PostgreSQL",dbname="OFIDAT",user="antares") #consulta<-dbSendQuery(conn,"select codigo_buque,coalesce(fecha_desembarque,fecha_regreso)::date # as fecha,al3_code,peso::numeric from DPCERCO where peso>0;") # PESOS y MAREAS consulta<-dbSendQuery(conn,"select idmarea, codigo_buque, al3_code, peso FROM DPCERCO where peso>0 order by idmarea,codigo_buque;") dpcerco<-fetch(consulta,-1) #Con porcentajes e idmarea p.ini<-cast(dpcerco, idmarea+codigo_buque ~ al3_code,sum) #Ahora vamos a modificar p.ini para dejarla con las columnas ordenadas según importancia en peso #Primero dividimos p.ini en campos genericos (barco y fecha) y campos con valores (especies) p.grupos<-p.ini[1:2] p.pesos<-p.ini[-(1:2)] #Definimos criterio de ordenacion (es un vector con las suma total por especie) criterio <- apply(p.pesos, 2, sum, na.rm=TRUE) #Aplicamos el criterio de ordenación p.pesos.ord<-p.pesos[,order(-criterio)] #Simbolo negativo para ordenar de mayor a menor #CREACION DE TABLA CON PORCENTAJOS # 1) Cogemos los nombres de las columnas originales: nombresColumna <- colnames(p.pesos.ord) # 2) Le añadimos a cada nombre el sufijo _peso para evitar duplicados en nombre de columna ; nuevosNombresColumna <- paste(nombresColumna,'_peso') # 3) Obtenemos las sumas por fila de los pesos por marea: totalPesoMarea <- rowSums(p.pesos.ord) # 4) Creamos un dataframe nuevo con los porcentajes de las columnas que corresponda, que # conservará los nombres de columna correctos (alpha3 sin alterar) p.porcs <- p.pesos.ord/totalPesoMarea # 5) Cambiamos los nombres de columna del dataframe de pesos por los nuevos colnames(p.pesos.ord) <- nuevosNombresColumna # 6) Ahora obtenemos lo que será en el futuro la columna inicial de las especies en porcentaje # (sumamos 2 para tener en cuenta la columna de suma que obtenemos en el siguiente paso) colIniAnalisis <- ncol(p.grupos)+ncol(p.pesos.ord)+2 # 6) Ahora ya es posible juntar todo para tener la tabla final ( p <- cbind(p.grupos,p.pesos.ord,totalPesoMarea,p.porcs) #La variable numero especies indica el número de especies a usar en el análisis. # Como las especies están ordenadas, cuando decidamos quedarnos con las X primeras especies # simplemente establecemos numeroEspecies<-X numeroEspecies<-110 columnaCorte<-colIniAnalisis+numeroEspecies #En lugar de estar siempre cambiando varios parámetros, centralizamos el rango de columnas para CLARA # en esta variable rangoAnalisis<-c(colIniAnalisis:columnaCorte) <<<- Muchas gracias por vuestra ayuda El 03/12/13 14:17, Isidro Hidalgo escribió:> Chico, me quedo a cuadros. Algún fiera de por aquí te dirá por qué, pero yo > a bote pronto no tengo ni idea... Si nos puedes poner el código con el que > se originan ese par de variables quizá podamos ver algo... > Un saludo > > > Isidro Hidalgo Arellano > Observatorio Regional de Empleo > D.G. de Desarrollo de Estrategia Económica y Asuntos Europeos > Avenida de Irlanda, 14 > Tlf.: 925 28 80 98 ihidalgo en jccm.es > Consejería de Empleo y Economía > http://www.jccm.es > > > > >> -----Mensaje original----- >> De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r- >> project.org] En nombre de Jorge Tornero - Listas >> Enviado el: martes, 03 de diciembre de 2013 14:09 >> Para: Carlos J. Gil Bellosta >> CC: r-help-es >> Asunto: Re: [R-es] seleccionar columnas de un dataframe mediante >> variables >> >> Hola a todos: >> >> Rediela!! >> >> Si hago la prueba con >> >> rangoAnalisis<-c(110:120) >> >> Funciona!!! >> >> Pero como os comenté antes, no. >> Ojo!!! >> >> La idea es que tanto columnaInicial como columnaFinal son >> números(índices) de columna!!! De hecho, haciendo el str() de estas >> variables me indica que son del tipo num >> >> Un saludo >> >> >> >> >> El 03/12/13 13:41, Carlos J. Gil Bellosta escribió: >>> Hola, ¿qué tal? >>> >>> ¿Qué son columnaInicial y columnaFinal? ¿Números? En tal caso, >> debería >>> funcionar lo que haces. >>> >>> Si no, tienes que convertirlos a números: >>> >>> col.ini.num <- which(colnames(datos.original) == columnaInicial) >>> col.fin.num <- which(colnames(datos.original) == columnaFinal) >>> >>> Y entonces sí que puedes crear el rango col.ini.num:col.fin.num. >>> >>> Un saludo, >>> >>> Carlos J. Gil Bellosta >>> http://www.datanalytics.com >>> >>> El día 3 de diciembre de 2013 13:30, Jorge Tornero - Listas >>> <jtorlistas en gmail.com> escribió: >>>> Buenos días a todos: >>>> >>>> Para empezar, y como este es mi primer mensaje a la lista, me >>>> presentaré. Mi nombre es Jorge Tornero y trabajo en el Instituto >>>> Español de Oceanografía como Ayudante de Investigación. No soy >>>> usuario habitual de R pero estoy tomando contacto con él de cara a >> un proyecto en el que ando involucrado. >>>> Mi consulta es: >>>> >>>> Me interesaría poder seleccionar columnas de un dataframe, pero >>>> empleando dos variables como inicio del intervalo y fin. He >> intentado lo siguiente: >>>> rangoAnalisis<-c(columnaInicial:columnaFinal) >>>> >>>> y luego >>>> >>>> datos<-datos.original[,rangoAnalisis] >>>> >>>> Con sus variantes de paréntesis, etc... sin resultado >>>> >>>> ¿Alguna idea? >>>> >>>> Muchas gracias y un saludo >>>> >>>> Jorge Tornero >>>> >>>> _______________________________________________ >>>> 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 > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Seemingly Similar Threads
- seleccionar columnas de un dataframe mediante variables
- seleccionar columnas de un dataframe mediante variables
- seleccionar columnas de un dataframe mediante variables
- seleccionar columnas de un dataframe mediante variables
- seleccionar columnas de un dataframe mediante variables