[R-es] Problema utilizando la función dist2isobath (marmap package) con un sistema de coordenadas proyectadas
Tengo un grid creado en un sistema de coordenadas proyectado (WGS84 zona 30N) y estoy intentando extraer la distancia más cercana a la costa desde de todas las celdas del grid, asi como a otras isóbatas utilizando la función "dist2isobath" del paquete marmap. Para ello reproyecté los datos del ETOPO1 (batimetría oceánica) a la misma proyección que los datos de mi grid y después he intentado utilizar la función "dist2isobath", pero me da un error. Aparentemente sólo funciona con coordenadas geográficos (ver el error a continuación). ¿Sabeis cómo puedo resolverlo o si existe otra función con la que trabajar con coordenadas proyectadas? Aquí os paso un ejemplo de los datos y el script, asi como el error que obtengo: head(grid) # ejemplo de mis datos del grid Lon Lat1 -124195.7 49866522 -120195.7 49866523 -116195.7 49866524 -112195.7 49866525 -108195.7 49866526 -104195.7 4986652 summary(etopo1) # ETOPO1 ya reproyectado y convertido a la clase "bathy" # Bathymetric data of class 'bathy', with 1329 rows and 709 columns# Latitudinal range: 4306614.28 to 5618264.28 (4306614.28 N to 5618264.28 N)# Longitudinal range: -550748.25 to 1203531.75 (550748.25 W to 1203171.75 E)# Cell size: 79258.1 minute(s) # Depth statistics:# Min. 1st Qu. Median Mean 3rd Qu. Max. NA's# -5586.23 -4004.18 -99.56 -1392.81 244.61 2928.77 141413 # First 3 columns and rows of the bathymetric matrix: # 4306614.27700283 4308466.88999718 4310319.50299153 # -550748.253167697 NA NA NA # -549427.259191793 NA NA NA # -548106.265215889 NA NA NA ## Y aquí utilizao la función para obtener las distancias: DistCoast <- dist2isobath(etopo1, grid[,1:2], isobath=0) Error in .pointsToMatrix(p) : longitude < -360 Gracias por la ayuda! -- *-* *Isabel García Barón* Email: xan...@gmail.com PhD Student at AZTI Foundation - AZTI Fundazioa Marine Ecosystems Functioning Herrera Kaia, Portualdea z/g 20110 - Pasaia (Gipuzkoa) [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Asignar a un dataframe un id de otro dataframe en función de intervalos con fechas
Muchas gracias Olivier, funciona perfecto! El 23 de junio de 2016, 18:08, Olivier Nuñez <onu...@unex.es> escribió: > > tapply(df2$time,df2$label,FUN=function(x) df1$id[!(x<df1$begin | > x>df1$end)]) > 2012_1 2012_10 2012_2 2012_3 2012_4 2012_5 2012_6 2012_7 2012_8 > 2012_9 > 2 9 2 2 2 2 2 5 9 > 10 > > Un saludo. Olivier > > > - Mensaje original - > De: "Isa García Barón" <xan...@gmail.com> > Para: r-help-es@r-project.org > Enviados: Jueves, 23 de Junio 2016 16:09:21 > Asunto: [R-es] Asignar a un dataframe un id de otro dataframe en función > de intervalos con fechas > > Hola a todxs, > > No encuentro la manera de hacer algo que aparentemente parece muy sencillo: > > Tengo dos dataframe, en el primero tengo una serie de códigos con hora de > inicio y hora de fin y en el segundo otros códigos asociados a una hora; Lo > que necesito es crear una nueva variable en el segundo data frame que > indique a qué intervalo del primer data frame (df1$id) pertenece cada nivel > del segundo dataframe (df2$label). > > Os dejo un ejemplo reproducible: > > df1 <- data.frame(id=seq(1, 10, 1),begin=c("2012-09-06 > 09:34:00","2012-09-06 > 10:18:00","2012-09-06 10:53:00","2012-09-06 11:28:00","2012-09-06 > 12:02:00","2012-09-06 12:36:00","2012-09-06 16:36:00","2012-09-07 > 08:42:00","2012-09-07 09:16:00", "2012-09-07 09:51:00"),end=c("2012-09-06 > 10:03:00","2012-09-06 10:53:00","2012-09-06 11:28:00","2012-09-06 > 12:02:00","2012-09-06 12:36:00","2012-09-06 12:55:00","2012-09-06 > 16:59:00","2012-09-07 09:16:00","2012-09-07 09:51:00","2012-09-07 > 10:17:00")) > > df2 <- data.frame(label=c("2012_1", > > "2012_2","2012_3","2012_4","2012_5","2012_6","2012_7","2012_8","2012_9","201 > 2_10"),time=c("2012-09-06 10:34:00","2012-09-06 10:35:00","2012-09-06 > 10:36:00","2012-09-06 10:37:00","2012-09-06 10:38:00","2012-09-06 > 10:39:00","2012-09-06 12:33:00","2012-09-07 09:19:00","2012-09-07 > 09:52:00", > "2012-09-07 09:43:00")) > > resultado <- data.frame(label=c("2012_1", > > "2012__2","2012_3","2012_4","2012_5","2012_6","2012_7","2012_8","2012_9","20 > 12_10"),date=c("2012-09-06 10:34:00","2012-09-06 10:35:00","2012-09-06 > 10:36:00","2012-09-06 10:37:00","2012-09-06 10:38:00","2012-09-06 > 10:39:00","2012-09-06 12:33:00","2012-09-07 09:19:00","2012-09-07 > 09:52:00","2012-09-07 09:43:00"),id=c(2,2,2,2,2,2,5,8,9,8)) > > Supongo que el primer paso es convertir las variables que tienen fecha a > formato POSIXlt con strptime{base}, así: > > df1$begin <- strptime(df1$begin, format="%Y-%m-%d %H:%M:%S") > df1$end <- strptime(df1$end, format="%Y-%m-%d %H:%M:%S") > > df2$date <- strptime(df2$date, format="%Y-%m-%d %H:%M:%S") > > y quizá después calcular el intervalo entre las fechas del df1, así: > > df1$intervals <- as.interval(df1$begin, df1$end) > > A partir de aquí no sé cómo asignar la variable id a df2, he probado con > %within%, pero quizá no se cómo usarlo bien, > > Muchísimas gracias, > > Isa > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- *-* *Isabel García Barón* Email: xan...@gmail.com PhD Student at AZTI Foundation - AZTI Fundazioa Marine Ecosystems Functioning Herrera Kaia, Portualdea z/g 20110 - Pasaia (Gipuzkoa) [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Asignar a un dataframe un id de otro dataframe en función de intervalos con fechas
Hola a todxs, No encuentro la manera de hacer algo que aparentemente parece muy sencillo: Tengo dos dataframe, en el primero tengo una serie de códigos con hora de inicio y hora de fin y en el segundo otros códigos asociados a una hora; Lo que necesito es crear una nueva variable en el segundo data frame que indique a qué intervalo del primer data frame (df1$id) pertenece cada nivel del segundo dataframe (df2$label). Os dejo un ejemplo reproducible: df1 <- data.frame(id=seq(1, 10, 1),begin=c("2012-09-06 09:34:00","2012-09-06 10:18:00","2012-09-06 10:53:00","2012-09-06 11:28:00","2012-09-06 12:02:00","2012-09-06 12:36:00","2012-09-06 16:36:00","2012-09-07 08:42:00","2012-09-07 09:16:00", "2012-09-07 09:51:00"),end=c("2012-09-06 10:03:00","2012-09-06 10:53:00","2012-09-06 11:28:00","2012-09-06 12:02:00","2012-09-06 12:36:00","2012-09-06 12:55:00","2012-09-06 16:59:00","2012-09-07 09:16:00","2012-09-07 09:51:00","2012-09-07 10:17:00")) df2 <- data.frame(label=c("2012_1", "2012_2","2012_3","2012_4","2012_5","2012_6","2012_7","2012_8","2012_9","201 2_10"),time=c("2012-09-06 10:34:00","2012-09-06 10:35:00","2012-09-06 10:36:00","2012-09-06 10:37:00","2012-09-06 10:38:00","2012-09-06 10:39:00","2012-09-06 12:33:00","2012-09-07 09:19:00","2012-09-07 09:52:00", "2012-09-07 09:43:00")) resultado <- data.frame(label=c("2012_1", "2012__2","2012_3","2012_4","2012_5","2012_6","2012_7","2012_8","2012_9","20 12_10"),date=c("2012-09-06 10:34:00","2012-09-06 10:35:00","2012-09-06 10:36:00","2012-09-06 10:37:00","2012-09-06 10:38:00","2012-09-06 10:39:00","2012-09-06 12:33:00","2012-09-07 09:19:00","2012-09-07 09:52:00","2012-09-07 09:43:00"),id=c(2,2,2,2,2,2,5,8,9,8)) Supongo que el primer paso es convertir las variables que tienen fecha a formato POSIXlt con strptime{base}, así: df1$begin <- strptime(df1$begin, format="%Y-%m-%d %H:%M:%S") df1$end <- strptime(df1$end, format="%Y-%m-%d %H:%M:%S") df2$date <- strptime(df2$date, format="%Y-%m-%d %H:%M:%S") y quizá después calcular el intervalo entre las fechas del df1, así: df1$intervals <- as.interval(df1$begin, df1$end) A partir de aquí no sé cómo asignar la variable id a df2, he probado con %within%, pero quizá no se cómo usarlo bien, Muchísimas gracias, Isa ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Extraer datos de una variable factor (Isa García Barón)
Finalmente consegu� solucionarlo con el paquete dplyr y la funci�n Lines (package sp) de la siguiente manera: Siendo df mi dataframe con la variable LAT y LON correspondiente a cada punto del transecto, es decir, cada fila de df y TRANS la variable factor: Nuevo_df <- as.data.frame(df %>% group_by (TRANS) %>% summarise (lon_start_leg = first (LON), lat_start_leg = first (LAT), lon_end_leg = last (LON), lat_end_leg = last (LAT))) Gracias por las respuestas, --- Isabel Garc�a Bar�n [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] RV: Extraer datos de una variable factor
Hola a todos, Espero que pod�is ayudarme con lo que necesito, aparentemente parece sencillo, pero no doy con la soluci�n: Tengo una base de datos con puntos GPS pertenecientes a diferentes transectos, organizada de la siguiente manera: Un dataframe con coordenadas (latitud y longitud) divididas por transectos ( cada nivel de la variable tipo factor) y varias filas de coordenadas para cada transecto, como en el siguiente ejemplo: VAR 1 LATITUD LONGITUD A Y1 X1 A Y1 X2 A Y3 X3 B Y4 X4 B Y5 X5 B 6Y X6 C Y7 X7 C Y8 X8 D Y9 X9 D Y10 X10 D Y11 X11 D Y12 X12 D Y13 X13 Necesito extraer, �nicamente, por cada transecto, la primera y �ltima fila, es decir las posiciones de inicio y fin del transecto. Para despu�s poder dividir los transectos en segmentos de x km. Espero haberme explicado bien, Muchas gracias, Isabel Garc�a [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Problema con NA en un csv proveniente de una BDD de access
Hola a todos, Tengo un problema a la hora de realizar subsets en un csv. Este csv proviene de haber seleccionado una serie de datos a partir de una BDD Access mediante el paquete RODBC. Hay una serie de datos que son introducidos mediante un formulario y otros pegados directamente en la BDD. Cuando visualizo el csv hay variables que aparecen vacias (� �) ya que al rellenar el formulario en access no se introduc�a ning�n dato mediante el formulario, mientras que hay variables que aparecen como �NA� porque al rellenar el formulario, en el caso de esa observaci�n, no se ha introducido ning�n dato en la casilla correspondiente. Bien, el problema es que, aun incluyendo en la lectura del csv (read.csv�) la funci�n na.strings y viendo que efectivamente todas las celdas en blanco (por la primera raz�n anterior) son tratadas como NA, al querer realizar un subset de los datos con NA de ciertas variables, R no los reconoce, por lo que me devuelve un dataframe con 0 observaciones. He probado con na.strings de todas las maneras posibles: - na.strings=c("", "NA") - na.strings=c("NA") - na.strings=c("") Y estoy intentando realizar el subset de la siguiente manera: - distance<-subset(juv12,distance!="NA") # Selecciono solo las observaciones con valores para esa variable - sindistance<-subset(juv12,distance=="NA") # Selecciono solo las observaciones sin valor (con NA) para esa variable. Problema: devuelve 0 observaciones Adem�s, si realiza una consulta para saber cu�ntos valores del csv para esa variable son NA de la siguiente manera: table(juv12$distance=="NA") me devuelve solo el n�mero de datos en el que esto es falso, pero si vemos el n�mero de datos en el que esto es falso realmente es la resta del total menos aquellos que tienen valor. Es decir, reconoce que hay celdas sin valores, pero no los reconoce como NA porque no los devuelve como TRUE. Espero haberme explicado bien, Muchas gracias, Isa --- Isabel Garc�a Bar�n PhD Student [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Como conectar R con una base de datos Access en Windows 64-bit (RODBC package)
Muchas gracias por las respuestas, pero la verdad es que no he sido capaz de arreglarlo con ellas. RStudio no me da la posibilidad de elegir con que versión quiero que funcione. La solución momentánea que he encontrado es introducir la base de datos y las posteriores acciones con el paquete RODBC en RGui (32-bit), guardar el workspace y abrirlo después en RStudio. Espero que podáis ayudarme para solucionarlo! Gracias de nuevo. *-* *Isabel García Barón* Email: xan...@gmail.com PhD Student at AZTI Foundation - AZTI Fundazioa Marine Ecosystems Functioning Herrera Kaia, Portualdea z/g 20110 - Pasaia (Gipuzkoa) [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Función assign y paste0 en un loop
Hola, espero explicar bien el problema que tengo. Estoy intentando hacer loops para glm's. El problema vieneal nombrar cada glm de una manera y realizar la seleccion por AIC mediante la función step. Cuando realizo los glm utilizo las funcion assign y paste0, para nombrar a cada uno distinto: asssign(paste0(glm,i),glm(ap~V1+V2+V3+V4+V5,data=datos,family = binomial(link=logit))) Después, lo que pretendo es realizar la selección por AIC, mediante la función step para cada glm credo anteriormente y ahí viene el problema, no se cómo decirle que me haga el step para cada glm con cada nombre creado anteriormente: assign(paste0(glmstep,i),step(glm,i) Error: unexpected symbol in: assign(paste0(glmstep,i),step(glm,i) todosres Necesito hacer esto para extraer los coeficientes de todos los glm finales seleccionados, en esta parte supongo que también tendré el mismo problema... A continuación el script completo: nes - read.csv('C:/Aegmon/nes.csv', sep=';', header=T) nreps=5 #selecting all rows with presences index1=which(nes$ap==1) np=length(index1) #create object to holdall results of predicting the probability #of the observation left out todosres=matrix(0,nrow=nt,ncol=nreps) for (i in 1:np){ datos=nesting[-index1[i],] datosp=datos[datos$ap==1,] datosa=datos[datos$ap==0,] ndatosa=nrow(datosa) for (j in 1:nreps) { datosarand=datosa[sample(ndatosa,size=np,replace=FALSE),] newsamp=rbind(datosp,datosarand) asssign(paste0(glm,i),glm(ap~V1+V2+V3+V4+V5,data = datos,family = binomial(link=logit))) save(list=paste0(glm,i),file=paste0(resultsglm/glm,i,.Rdata)) assign(paste0(glmstep,i),step(glm,i) todosres[,j]=predict.glm(object=glmtempstep,newdata=nes,type=response) } } coeffsglm=matrix(0,nrow=nt,ncol=9) for (i in 1:nt){ coeffsglm[j,]=as.numeric(eval(parse(text=paste0(glmstep,i,$coefficients } Espero haberme explicado bien, muchas gracias 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
[R-es] Cómo aplicar weights a las observaciones en un GLM binomial
Hola, espero ser clara en el mensaje ya que es la primera vez que recurro a este tipo de ayudas, explico mi duda: Tengo un dataset con 4505 observaciones en el que la variable dependiente son presencias (n=97 y clasificadas como 1) y ausencias (n=4408 y clasificadas como 0). Mi primer paso fue realizar un GLM con una muestra compensada de ausencias y presencias para la variable dependiente, es decir 97 presencias y 97 ausencias. Sin embargo, como todo lo que tengo son ausencias y no pseudoausencias me recomendaron utilizar las 97 presencias frente a todas las ausencias, aquí viene el problema. Si realizo un GLM con ausencia/presencia como variable dependiente no siendo ésta proporcional entre 1 y 0 debo ponderar las observaciones, lo cuál creo que se realiza añadiendo el vector weights a la función, quedando asi: modelo - glm(v_dependiente ~ v1 + v2 + v3, data = datset, weights=x, family = binomial (link=logit) Mi duda es cómo calcular el factor de ponderación de las presencias y las ausencias para crear el vector que pueda introducir en la función weights. Muchas gracias! Un saludo *-* *Isabel García Barón* [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es