Hi Julia, You have two issues here: one is why do you have so many duplicated observations? This may be in part due to having different birds sampled at the same moment in time....
*> TB$gmt = TB$gmt[-dupz]* Error in `$<-.data.frame`(`*tmp*`, "gmt", value = c(1265908114, 1265908416, : replacement has 22079 rows, data has 22274 The reason you are getting this error is that you cannot reduce the length of one column alone in a data.frame and keep the others at their original length. You can, however, remove all associated observations period: TB = TB[-dupz,] This works because every column has the same number of elements, and since you know which elements of TB$gmt are duplicated you can use that as an index of which rows you no longer want in the data frame. But you are probably more interested in identifying duplicated date/time values within the set of observed values for each unique bird, is that not correct? In this case there is an extra step, albeit an important one: # First you split your data frame into a list by unique bird splitdata = split(TB, TB$Bird, drop=TRUE) Note the drop=TRUE argument is in case you have levels of a factor with no observations - which can happen - therefore you choose to drop those levels (although you can still keep them if you have some compelling reason, but it may complicate the results). # Next you identify duplicates within each unique bird data set. splitdupz = lapply(splitdata, function(birdup) which(duplicated(birdup$gmt))) str(splitdupz) # If you've had a look and you've decided to remove them you can do it this way splitdata.nodupz = lapply(splitdata, function(birdup) birdup = birdup[-which(duplicated(birdup$gmt))),]) # Now you can recompile your data frame with the duplicates from your unique Bird data sets removed. TB2 = do.call(rbind, splitdata.nodupz) I don't have any of your sample data to work with so I can't verify this has been debugged, but it should give you a pretty good head start. When a create a ltraj for only one individual (eg. bird 18) it works fine: tr18<-as.ltraj(xy[TB$Bird=="18",], date=TB$gmt[TB$Bird=="18"], id="18") One last thing to note is I'm not sure your id argument in the above call should be "18"; it may be designed to work that way but I would prefer to go with TB$Bird[TB$Bird=="18"], which will give you a vector of values == "18" the length of nrow(TB). Tyler On 14/08/2010, at 3:04 , Tyler Dean Rudolph wrote: I presume your date/time values are of class POSIXct and do include times (if they don't adehabitat will think multiple observations on a given day are duplicates)? If that's all good find out which POSIXct values are repeated: dupz = which(duplicated(mydates)) mydates = mydates[-dupz] Tyler On 2010-08-14, at 8:49, Julia Sommerfeld < <[email protected]><[email protected]> [email protected]> wrote: Hello, Thank you for yoir fast reply. I have indeed overlapping dates, i.e. several birds have the same start and end date. But I'm not sure how to overcome this problem? Couldn't find anything in adehabitat. Cheers Julia On 14/08/2010, at 2:38 , Tyler Dean Rudolph wrote: your problem seems to be that you have duplicate (i.e. more than one identical) dates for a given burst. I believe there are arguments in adehabitat to check for this; if not you will need to verify this first. On 2010-08-14, at 8:16, Julia Sommerfeld < <[email protected]><[email protected]><[email protected]> [email protected]> wrote: Dear All, I would like to create an object of class "ltraj" for all GPS positions (id=Bird) with time, but I always get the following error message: *Error in as.ltraj(xy, TB$gmt, id, burst, typeII = TRUE, slsp = c("remove", : * * non unique dates for a given burst* Do I need to create a burst? Could anyone tell me what the exact difference between "id" and "burst" in as.ltraj is? When a create a ltraj for only one individual (eg. bird 18) it works fine: tr18<-as.ltraj(xy[TB$Bird=="18",], date=TB$gmt[TB$Bird=="18"], id="18") But it doesn't work for all animals... My script so far: library(adehabitat) library(ade4) library(gpclib) library(trip) library(maps) library(mapdata) library(fields) TB<-as.data.frame(read.table("GPS_2009_2010R.csv",header=T,sep=',')) xy<-TB[,c("LON","LAT")] id<-TB[,c("Bird")] ### Conversion of the date to the format POSIX gmt<-(TB$DateTime) TB$gmt<-as.POSIXct(strptime(gmt, "%d.%m.%Y %H:%M:%S", tz="GMT")) ### Creation of the object of class "ltraj" for GPS positions with time tr<-as.ltraj(xy, TB$gmt, id, typeII=TRUE, slsp = c("remove", "missing")) My csv.file contains the following columns: *Bird *(ID) *DateTime* (date and time in one column) *LON* (longitude) *LAT* (latitude Thank you very much. Best regards, Julia _______________________________________________ AniMov mailing list <[email protected]> <[email protected]> <[email protected]> [email protected] <http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov><http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov><http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov> http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov _______________________________________________ AniMov mailing list <[email protected]> <[email protected]> <[email protected]> [email protected] <http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov><http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov> http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov Julia Sommerfeld - PhD Candidate Institute for Marine and Antarctic Studies University of Tasmania Private Bag 129, Hobart TAS 7001 Phone: +61 458 247 348 Email: <[email protected]> <[email protected]> <[email protected]> [email protected] <[email protected]> <[email protected]><[email protected]> [email protected] _______________________________________________ AniMov mailing list <[email protected]> <[email protected]>[email protected] <http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov><http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov> http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov _______________________________________________ AniMov mailing list <[email protected]>[email protected] http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov Julia Sommerfeld - PhD Candidate Institute for Marine and Antarctic Studies University of Tasmania Private Bag 129, Hobart TAS 7001 Phone: +61 458 247 348 Email: <[email protected]>[email protected] <[email protected]>[email protected] _______________________________________________ AniMov mailing list [email protected] http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov
_______________________________________________ AniMov mailing list [email protected] http://lists.faunalia.it/cgi-bin/mailman/listinfo/animov
