包adehabitatLT;命令as.ltraj;重复元素

时间:2015-07-24 09:46:03

标签: r

我正在使用adehabitatLT R包来分析通过附在动物身上的卫星发射器获得的动物移动位置。数据集包括IdNumber,日期,时间,纬度,长度和其他辅助信息。当我按IdNumber和日期/时间对数据进行排序并手动检查结果时,我找不到任何重复的元素。在R我读取我的csv文件,并使用as.data.frame创建一个数据帧,并使用命令duplicates()我发现没有重复,无论我是在整个数据帧或日期/时间列/ s上运行命令,但在使用时as.POSIXct()命令我找到41个重复元素。我的步骤是:

required(adehabitatLT) #works fine

data<-read.csv("data....) #works fine

data<-as.data.frame(data) #works fine

duplicated(data) # works fine, no duplicates

duplicated(data$Date) #works fine, it finds duplicate dates as expected

duplicated(data$Time) #works fine, it finds duplicate times as expected

da <- as.POSIXct(strptime(paste(data$Date, data$Time), "%y%m%d %H:%M:%S"), tz="GMT") #works fine

sum(duplicated(da)) #returns 41 duplicate elements

trj<-as.ltraj(xy = data[,c("XD","YD")], date = da, id = data$IdNumber, typeII = TRUE)

Error in as.ltraj(xy = satdat[, c("XD", "YD")], date = da, id = satdat$IdNumber,  : 
  non unique dates for a given burst

我期望错误消息给出da中存在重复元素的事实(2个或更多不同的IdNumber对于相同/不同的位置可以具有相同的日期/时间),但我猜想当da元素关联到IdNumber和纬度和长坐标,所有行应该是唯一的(对于手动检查的数据,我100%确定没有重复)。

我错过了什么,做错了什么?

P.S。:对于typeI轨迹,命令as.jtraj当然很好

UPDATE1:

这是我的数据帧的结构,名为&#34; satdat&#34;

    PPT   Date     Time              DT       XD       YD     XUTM    YUTM
1 87776 150314 17:46:24 150314 17.46.24 35.57666 12.33740 780225.6 1365210
2 87776 150314 19:22:29 150314 19.22.29 35.58675 12.34696 781313.4 1366279
3 87776 150314 20:14:00 150314 20.14.00 35.60735 12.34675 783555.3 1366277
4 87776 150314 21:06:28 150314 21.06.28 35.60846 12.35585 783666.3 1367286
5 87776 150314 21:57:37 150314 21.57.37 35.61608 12.36045 784490.5 1367803
6 87776 150315 02:04:36 150315 02.04.36 35.54072 12.41002 776238.2 1373210

sum(duplicated(satdat)) #check for duplicate

[1] 0

da <- as.POSIXct(strptime(paste(satdat$Date, satdat$Time), "%y%m%d %H:%M:%S"), tz="GMT") #create successfully my POSIXct element

head(da)

[1] "2015-03-14 17:46:24 GMT" "2015-03-14 19:22:29 GMT" "2015-03-14 20:14:00 GMT" "2015-03-14 21:06:28 GMT" "2015-03-14 21:57:37 GMT"
[6] "2015-03-15 02:04:36 GMT"

sum(duplicated(da)) #check for duplicates; i expect duplicates

[1] 44

duplicated(da) #which are duplicated? apparently the element number 14
   [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

satdat[14,]

     PPT   Date     Time              DT       XD       YD     XUTM    YUTM
14 87776 150315 16:17:17 150315 16.17.17 35.58955 12.41916 781540.6 1374273

很奇怪,手动检查没有其他具有相同值的行。

0 个答案:

没有答案