[R-es] Problema utilizando la función dist2isobath (marmap package) con un sistema de coordenadas proyectadas

2018-09-28 Por tema Isa García Barón
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

2016-06-23 Por tema Isa García Barón
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

2016-06-23 Por tema Isa García Barón
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)

2016-06-08 Por tema 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

2016-06-08 Por tema Isa García Barón
 

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

2015-10-29 Por tema Isa García Barón
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)

2015-04-28 Por tema Isa García Barón
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

2015-02-04 Por tema Isa García Barón
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

2014-11-14 Por tema Isa García Barón
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