Carolina Pelegrín Cuartero
2013-Nov-30 11:06 UTC
[R-es] Ayuda con manipulación de datos de un data.frame
Hola a todos, Soy nueva en R (y además tengo conocimientos de programación prácticamente nulos) y necesito ayuda. Tengo un data.frame con varias columnas de datos meteorológicos y una columna de fecha. También he creado unas columnas con dia, hora y minuto. Los comandos hasta ese momento son esos (lo siento, no sé si hace falta ponerlos o no) junio12total<-read.table("junio12total.txt",header=T,sep="\t",dec=",") as.data.frame(junio12total) attach(junio12total) auxiliar.fecha<-strptime(fecha, "%d/%m/%Y %H:%M") #cargar paquete chron library(chron) junio12total$mes<-months(auxiliar.fecha) junio12total$dia<-days(auxiliar.fecha) junio12total$hora<-hours(auxiliar.fecha) junio12total$minuto<-minutes(auxiliar.fecha) detach() attach(junio12total) El problema que tengo ahora es el siguiente: necesito seleccionar los datos máximos de una de las columnas (velocidad de viento) teniendo en cuenta que como resultado quiero un dato para cada hora (tengo un dato cada diez minutos) y que ese dato máximo hay que extraerlo de entre los minutos :00, :10 y :50 *de la hora previa *(es decir, me interesa la velocidad máxima instantánea horaria). Como analizo un único mes, hay que tener en cuenta que para el día 1 y hora=0, sólo habrá que buscar la máxima velocidad para minuto=0 y minuto=10, y lo mismo para el día 30 y hora 23. Lo he intentado hacer, supongo que un poco por la cuenta de la vieja, y no obtengo ningún resultado. Os copio el código (aunque sé que está mal hecho), para que veáis que he intentado hacer algo... # Fase 1. PRUEBA is.element(minuto,c(50,0,10)) # Resultados para 1<dia<30 min.aux<-(minuto=0)&(minuto=10) dia.aux<-(1<dia)&(dia<30) clave<-dia.aux*(hora*min.aux+(hora-1)*(minuto=50)) # Resultados para dia=1 clave1<-(dia=1)*(clave.basura-(hora=0)) # Resultados para dia=30 clave30<-(dia=30)*(clave.basura-(hora=23)) clave.general<-clave+clave1+clave30 resultado<-tapply(vel.vientokmh,clave.general,max) summary(resultado) resultado # El resultado es incorrecto Agradecería mucho si alguien supiera cómo hacerlo y me echara un cable. Gracias de antemano! Un saludo [[alternative HTML version deleted]]
Carlos Ortega
2013-Dec-01 16:40 UTC
[R-es] Ayuda con manipulación de datos de un data.frame
Hola Carolina, ¿Podrías adjuntar el conjunto de datos?. Como dices que tampoco llevas mucho tiempo con R, dejo de lado por ahora el decirte que utilices una librería que te hace estas cosas de forma automática, la librería se llama Openair, por si quieres mientras tanto ir echándole un vistazo. Saludos, Carlos Ortega www.qualityexcellence.es El 30 de noviembre de 2013 12:06, Carolina Pelegrín Cuartero < carolina.pelegrinc@gmail.com> escribió:> Hola a todos, > > Soy nueva en R (y además tengo conocimientos de programación prácticamente > nulos) y necesito ayuda. > > Tengo un data.frame con varias columnas de datos meteorológicos y una > columna de fecha. También he creado unas columnas con dia, hora y minuto. > Los comandos hasta ese momento son esos (lo siento, no sé si hace falta > ponerlos o no) > > junio12total<-read.table("junio12total.txt",header=T,sep="\t",dec=",") > as.data.frame(junio12total) > attach(junio12total) > > auxiliar.fecha<-strptime(fecha, "%d/%m/%Y %H:%M") > > #cargar paquete chron > library(chron) > > junio12total$mes<-months(auxiliar.fecha) > junio12total$dia<-days(auxiliar.fecha) > junio12total$hora<-hours(auxiliar.fecha) > junio12total$minuto<-minutes(auxiliar.fecha) > > detach() > attach(junio12total) > > El problema que tengo ahora es el siguiente: necesito seleccionar los datos > máximos de una de las columnas (velocidad de viento) teniendo en cuenta que > como resultado quiero un dato para cada hora (tengo un dato cada diez > minutos) y que ese dato máximo hay que extraerlo de entre los minutos :00, > :10 y :50 *de la hora previa *(es decir, me interesa la velocidad máxima > instantánea horaria). Como analizo un único mes, hay que tener en cuenta > que para el día 1 y hora=0, sólo habrá que buscar la máxima velocidad para > minuto=0 y minuto=10, y lo mismo para el día 30 y hora 23. > Lo he intentado hacer, supongo que un poco por la cuenta de la vieja, y no > obtengo ningún resultado. Os copio el código (aunque sé que está mal > hecho), para que veáis que he intentado hacer algo... > > # Fase 1. PRUEBA > > is.element(minuto,c(50,0,10)) > > # Resultados para 1<dia<30 > > min.aux<-(minuto=0)&(minuto=10) > dia.aux<-(1<dia)&(dia<30) > > clave<-dia.aux*(hora*min.aux+(hora-1)*(minuto=50)) > > # Resultados para dia=1 > clave1<-(dia=1)*(clave.basura-(hora=0)) > > # Resultados para dia=30 > clave30<-(dia=30)*(clave.basura-(hora=23)) > > clave.general<-clave+clave1+clave30 > > resultado<-tapply(vel.vientokmh,clave.general,max) > summary(resultado) > > resultado > > # El resultado es incorrecto > > > Agradecería mucho si alguien supiera cómo hacerlo y me echara un cable. > > Gracias de antemano! Un saludo > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Jorge Tornero - Listas
2013-Dec-03 12:30 UTC
[R-es] seleccionar columnas de un dataframe mediante variables
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