[R-es] error de incompatible methods

Marta valdes lopez
Wed, 04 Jun 2014 12:51:06 -0000

Hola Daniel, si perdona di a responder directamente y no me di cuenta.

Ya se donde esta el error, pero queria preguntar si a puede ser que mi R
funcione mal o algo porque esta manhana ejecute mi script y funciono
perfectamente y ahora volvi a ejecutarlo y me volvio a dar el mismo
problema de ayer , despues de reiniciar y demas el tinnR y el R, no se si
me vacila o es que tengo algo mal en realidad.

Despues el error esta en los símbolos o algo com el tiempo

 DBfishing<- na.omit(DBx[(DBx$calcSpeed<=speedFishing &
DBx$distHb>distHbRule & DBx$Time>minTime &
DBx$Time<=maxTime),])

Porque lo ejecute por separado y me funcione pero al poner el tiempo no me
funciona y me sale el warning message, mi pregunta es si com el tiempo hay
que utilizar otros símbolos de < o > diferentes o algo .

Pongo el script entero que utilice y funciono hasta donde me dio error:

 setwd("C:/Users/Marta/Desktop/DB")
  library(chron)
  library(xlsx)
 filename<-"univerest_50.csv"
 DBxy<-read.csv(filename, sep=",",header=TRUE)
  DBx<-DBxy
  names(DBx)<-c("Boat","DateTime","TimeDiff",
"Latitude", "Longitude",
"Course", "Speed", "distNm",
"calcSpeed", "calcCourse", "distHb",
"Harbour", "idTrip","vmsAngle",
"calcAngle", "vmsLeg", "calcLeg",
"Trip_vmsLeg", "Trip_calcLeg", "lengthTrip",
"lengthTrip_vmsLeg",
"lengthTrip_calcLeg","Time", "Date")

#Formatting date and time variables
  DBx$Date<-strptime(DBx$Date, "%d-%m-%Y")            ###Monicap
use ;
other use  Y
  DBx$Year<-as.POSIXlt(DBx$Date)$year+1900

DBx$Boat<-gsub("^\\s+|\\s+$", "", DBx$Boat)
 #Read file with boat codes and gears
  codeBoats<- read.csv("CODES_2002-2010New.csv",
sep=",",header=TRUE)            #Laptop
  codeBoats$CODIGO<-gsub("^\\s+|\\s+$", "",
codeBoats$CODIGO)
 #Assigning a Fishing license based on Boat and Year
  DBx$gear<-codeBoats$Lic[match(paste(DBx$Boat,DBx$Year),
paste(codeBoats$CODIGO,codeBoats$Year))]
    ddd<- DBx[DBx$calcSpeed %in% NA,]
    z<-length(ddd$gear)   #idem
  z0<-length(DBx$gear)

  ######PoleLine analyses / MAY 2013 #######Changes are: harbour with speed
rule (<rest)
  #Define GEAR HERE based on list above. Analysing BLL boats
  DBx <- DBx[DBx$gear %in% c("PoleLine"),]
  z1<-length(DBx$gear)
  z1
  #defining speed and distance limits
      speedFishing<-2.0  #less or equal to, in knots    (NEW MAY 2013
reduced from 5.3)

      speedHarb<-1.0
     distHbRule<-3.0    #greater than, in nautical miles nm

      speedSteam<-2.0    #greater than, in knots
      minTime<-times(c("05:59:59"))        #usual beginning of
fishing
operations
      maxTime<- times(c("20:59:59"))        #usual finishing of
fishing
operations
       #Selecting Harbour
        DBharbour<- na.omit(DBx[DBx$distHb<=distHbRule &
DBx$calcSpeed<=speedHarb,])
        DBharbour$State<-"Harbour"   #MONICAP= 10618; UNIVER1= ;
UNIVER2= ;
UNIVEREST= 1028
        z2<-length(DBharbour$State)
        write.table(DBharbour, file
paste("C:/Users/Marta/Desktop/Results/",filename, sep=""),
append = F,
quote = F, sep = ",", dec = ".",  row.names = F, col.names =
T)

          #Selecting Steaming
        DBsteaming<- na.omit(DBx[(DBx$calcSpeed>speedFishing) |
(DBx$distHb<=distHbRule & DBx$calcSpeed>speedHarb) |
(DBx$calcSpeed<=speedFishing & DBx$distHb>distHbRule),])
        DBsteaming$State<- "Steaming" #MONICAP= 88398; UNIVER1= ;
UNIVER2; UNIVEREST= 53748
        DBsteaming$Harbour<-""
        z4<-length(DBsteaming$State)
        ##NEW MAY 2013##BLL", "BLL / HL##MONICAP=45461, GEAR(NA)=;
UNIVER1=116200 ; UNIVER2=200965; UNIVEREST=0
        write.table(DBsteaming, file
paste("C:/Users/Marta/Desktop/Results/",filename, sep=""),
append = T,
quote = F, sep = ",", dec = ".",
                  row.names = F, col.names = F)

       #Selecting Fishing   #aqui el error
        DBfishing<- na.omit(DBx[(DBx$calcSpeed<=speedFishing &
DBx$distHb>distHbRule & DBx$Time>minTime &
DBx$Time<=maxTime),])
        DBfishing$State<-"Fishing"  #MONICAP= 43996; UNIVER1= ;
UNIVER2= ;
UNIVEREST= 19960
        ##NEW MAY 2013##BLL", "BLL / HL##MONICAP=8506, GEAR(NA)=;
UNIVER1=28417 ; UNIVER2=38266; UNIVEREST=0
        DBfishing$Harbour<-""
        z5<-length(DBfishing$State)
        write.table(DBfishing, file
paste("C:/Users/Marta/Desktop/Results/",filename, sep=""),
append = T,
quote = F, sep = ",", dec = ".",
                  row.names = F, col.names = F)

Muchas gracias, un saludo





El 3 de junio de 2014, 16:45, daniel <daniel319@gmail.com> escribió:

> Marta,
>
> Primero, responde a la lista, otros pueden ayudarte mejor que yo, y a
> algunos les puede resultar de interés este intercambio.
>
> Segundo. evidentemente los datos tienen una estructura especial, por lo
> que puedo ver los datos estan en una lista que contiene otras listas y
> data.frame. Alguno de los errores que recibes es por intentar operaciones
> sobre datos de distintas clases, y factores. Te sugiero que para entender
> mejor que es lo que lograste importar a R apliques str a las listas o
> data.frame que tienes, por ejemplo str(DBx).
>
> Tercero, reproducible significa que no estoy sentado enfrente de tu
> ordenador sino del mio y para poder ayudarte necesito poder hacer lo que tu
> intentas. Al copiar lo que te parece interesante has dejado afuera parte de
> la estructura que resulta necesaria para poder leer los datos, tu ejemplo
> me da error cuando lo que espero son datos en una estructura sea de
> data.frame, matriz o lista. Probablemente tu problema es como lograr de esa
> estructura leer los datos que te interesa y luego convertir los de tiempo a
> un formato acorde. Si no puedes mandar los datos inventa algunos
> manteniendo la estructura que tienes. La recomendación de dput(head(DBx))
> no será de mucha ayuda si lo que tienes es una lista. Me parece recordar
> que en tu mensaje anterior leías los datos con read.csv(DBx.csv), lo cual
> me llevó a pensar que tenías un data.frame, pero parece que lo que tienes
> es otra cosa. ¿Cómo te aseguras que sea reproducible? sencillo antes de
> enviarlo inicia una sesión de R y copia lo que vas a enviar para ver si
> funciona bien.
>
> De nuevo, di que quieres hacer con tus datos (ejemplo: ordenarlos por
> fecha, lugar y xxx), que estructura tienen (?str) y a partir de allí espero
> podamos ayudarte.
>
> Daniel Merino
>
>
>
>
> El 3 de junio de 2014, 12:00, Marta valdes lopez
<martavaldes85@gmail.com>
> escribió:
>
>  Hola Daniel,
>>
>> Voy a intentar explicarme porque como soy principiante en R hay cosas
que
>> ni se muy bien de donde salen.
>>
>> Aqui esta una parte de lo que me há salido cuando he puesto el
>> dput(head(DBx)) (he copiado solo lo que pensaba que podria interessar
para
>> explicar lo que quiero)
>>
>>
>> Time = structure(c(1219L,
>>     1279L, 1400L, 141L, 201L, 261L), .Label = c("0:00:00 ",
"0:01:00 ",
>>     "0:02:00 ", "0:03:00 ", "0:04:00 ",
"0:05:00 ", "0:06:00 ",
>>     "0:07:00 ", "0:08:00 ", "0:09:00 ",
"0:10:00 ", "0:11:00 ",
>>     "0:12:00 ", "0:13:00 ", "0:14:00 ",
"0:15:00 ", "0:16:00 ",
>>     "0:17:00 ", "0:18:00 ", "0:19:00 ",
"0:20:00 ", "0:21:00 ",
>>     "0:22:00 ", "0:23:00 ", "0:24:00 ",
"0:25:00 ", "0:26:00 ",
>>  class = "factor"), Date = structure(list(
>>         sec = c(0, 0, 0, 0, 0, 0), min = c(0L, 0L, 0L, 0L, 0L,
>>         0L), hour = c(0L, 0L, 0L, 0L, 0L, 0L), mday = c(11L,
>>         11L, 11L, 11L, 11L, 11L), mon = c(4L, 4L, 4L, 4L, 4L,
>>         4L), year = c(109L, 109L, 109L, 109L, 109L, 109L), wday = c(1L,
>>         1L, 1L, 1L, 1L, 1L), yday = c(130L, 130L, 130L, 130L,
>>         130L, 130L), isdst = c(1L, 1L, 1L, 1L, 1L, 1L), zone =
c("AZOST",
>>         "AZOST", "AZOST", "AZOST",
"AZOST", "AZOST"), gmtoff >> c(NA_integer_,
>>         NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
>>         )), .Names = c("sec", "min",
"hour", "mday", "mon", "year",
>>     "wday", "yday", "isdst",
"zone", "gmtoff"), class = c("POSIXlt",
>>     "POSIXt")), Year = c(2009, 2009, 2009, 2009, 2009, 2009),
>>     gear = structure(c(8L, 8L, 8L, 8L, 8L, 8L), .Label =
c("BLL",
>>     "BLL / HL", "BLL / PLL", "NotLic",
"OUT", "PLL", "PLL / PoleLine",
>>     "PoleLine", "PoleLine / PLL / BLL / Traps",
"Troll"), class >> "factor")), .Names =
c("Boat",
>> "DateTime", "TimeDiff", "Latitude",
"Longitude", "Course", "Speed",
>> "distNm", "calcSpeed", "calcCourse",
"distHb", "Harbour", "idTrip",
>> "vmsAngle", "calcAngle", "vmsLeg",
"calcLeg", "Trip_vmsLeg",
>> "Trip_calcLeg", "lengthTrip",
"lengthTrip_vmsLeg", "lengthTrip_calcLeg",
>> "Time", "Date", "Year",
"gear"), row.names = 923:928, class >> "data.frame")
>>
>> Despues el script que he utilizado para el tiempo y la hora:
>>
>> DBx$Date<-strptime(DBx$Date, "%d-%m-%Y")
###Monicap use ;
>> other use  Y
>>   DBx$Year<-as.POSIXlt(DBx$Date)$year+1900
>> DBx$Boat<-gsub("^\\s+|\\s+$", "", DBx$Boat)
>>
>> Despues he definido mis reglas para definir los diferentes estados de
los
>> barcos:
>>
>> speedFishing<-2.0
>>       speedHarb<-1.0
>>       distHbRule<-3.0
>>      speedSteam<-2.0
>>
>>       minTime<-times(c("05:59:59"))        #usual
beginning of fishing
>> operations
>>       maxTime<- times(c("20:59:59"))        #usual
finishing of fishing
>> operations
>>
>> Ypor ultimo cuando quiero definir el estado de fishing haciendo una
>> condicional de que ponga fishing cuando una serie de reglas se cumplan,
es
>> cuando me da el error:
>>
>> #Selecting Fishing
>>         DBfishing<- na.omit(DBx[(DBx$calcSpeed<=speedFishing
&
>> DBx$distHb>distHbRule & DBx$Time>minTime &
DBx$Time<=maxTime),])
>>
>> Y el error:
>> Warning messages:
>> 1: In `[.data.frame`(DBx, (DBx$calcSpeed <= speedFishing &
DBx$distHb >  :
>>   Incompatible methods ("Ops.factor", "Ops.times")
for ">"
>> 2: In `[.data.frame`(DBx, (DBx$calcSpeed <= speedFishing &
DBx$distHb >  :
>>   Incompatible methods ("Ops.factor", "Ops.times")
for "<="
>>
>> Espero haberme explicado mejor.. muchas gracias por tu tiempo!
>>
>> Un saludo
>>
>>
>>
>>
>>
>> El 3 de junio de 2014, 12:48, daniel <daniel319@gmail.com>
escribió:
>>
>> Marta,
>>>
>>> No entiendo lo que necesitas, pero aquí algunas cosas que pueden
>>> orientar las consultas, o solucionar el problema:
>>>
>>> fecha_sys <- Sys.time()
>>> str(fecha_sys)
>>> strptime(fecha_sys, format="%Y-%m-%d %H:%M:%S")
>>> str(strptime(fecha_sys, format="%Y-%m-%d %H:%M:%S")  )
>>> fecha <- format(Sys.time(), "%d-%m-%Y")
>>> str(fecha)
>>> as.POSIXlt(fecha, format = "%d-%m-%Y")
>>> # Si tienes como fecha 03-06-2003 19. Aunque sería mas simple si es
>>> 03-06-2003 19:00:00
>>> tu_fecha <- "03-06-2003 19"
>>> # quizás te interese explorar el paquete lubridate
>>> library(lubridate)
>>> hours(1:24)
>>>
>>> Si lo anterior te sirve bien. Si no te sirve puedes hacer un
ejemplo
>>> reproducible tratando de explicar que es lo que quieres,
proporcionando un
>>> grupo de datos por ejemplo dput(head(DBx)), y con la parte de tu
script que
>>> te da problemas.
>>>
>>> Suerte,
>>>
>>> Daniel Merino
>>>
>>>
>>>
>>> 2014-06-03 8:41 GMT-03:00 Marta valdes lopez
<martavaldes85@gmail.com>:
>>>
>>>> Hola!!
>>>>
>>>> Estoy intentando ejecutar un script com horas, al principio
ejecute
>>>> estos
>>>> comandos
>>>>
>>>>
>>>> DBx$Date<-strptime(DBx$Date, "%d-%m-%Y")
###Monicap use ;
>>>> other
>>>> use  Y
>>>>
>>>>  DBx$Year<-as.POSIXlt(DBx$Date)$year+1900
>>>>
>>>>  if(filename!="monicap_50.csv")
{DBx$Time<-paste(DBx$Time, ":00",
>>>> sep="")}
>>>>
>>>> Pero me daba el error de que mi base de datos tenia las horas
en formato
>>>> 00:00:00, entonces me anhadia dos ceros mas, entonces no
ejecute el
>>>> ultimo
>>>> comando y ahora al ejecutar este comando desp+ues del anterior:
>>>>
>>>>  DBfishing<- na.omit(DBx[(DBx$calcSpeed<=speedFishing
&
>>>> DBx$distHb>distHbRule & DBx$Time>minTime &
DBx$Time<=maxTime),])
>>>>
>>>> Me da este error:Warning messages:
>>>> 1: In `[.data.frame`(DBx, (DBx$calcSpeed <= speedFishing
& DBx$distHb >
>>>>  :
>>>>   Incompatible methods ("Ops.factor",
"Ops.times") for ">"
>>>> 2: In `[.data.frame`(DBx, (DBx$calcSpeed <= speedFishing
& DBx$distHb >
>>>>  :
>>>>   Incompatible methods ("Ops.factor",
"Ops.times") for "<="
>>>>
>>>> Las variables donde estan minTime y MaxTime son estos comandos:
>>>>
>>>>  minTime<-times(c("05:59:59"))        #usual
beginning of fishing
>>>> operations
>>>> > maxTime<- times(c("20:59:59"))        #usual
finishing of fishing
>>>> operations
>>>>
>>>> Alguien sabes que es lo que estoy haciendo mal? si necessitais
todo el
>>>> script lo pongo sin problema.
>>>>
>>>> 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
>>>>
>>>
>>>
>>>
>>> --
>>> Daniel
>>>
>>
>>
>
>
> --
> Daniel