1

我正在尝试处理像下面这样具有相机陷阱数据的数据库。拍摄的照片之间没有延迟,因此快速连续拍摄的照片很可能是同一个人。

如果它们在 10 分钟内出现,我想删除重复的物种,因为它们很可能是同一个体。(即,如果最后一张照片和下一张照片之间的时间少于 10 分钟)。有没有办法在 R 中做到这一点?谢谢!

  Site.Name Sampling.Unit.Name Photo.Date Photo.Time   Genus Species Number.of.Animals
1 Ranomafana        CT-RNF-1-01 06/10/2010   00:01:00                                  
2 Ranomafana        CT-RNF-1-01 11/10/2010   00:28:00 Eliurus  tanala                 1
3 Ranomafana        CT-RNF-1-01 12/10/2010   04:39:22   Fossa fossana                 1
4 Ranomafana        CT-RNF-1-01 12/10/2010   04:39:27   Fossa fossana                 1
5 Ranomafana        CT-RNF-1-01 12/10/2010   16:47:41 Nesomys   rufus                 1
6 Ranomafana        CT-RNF-1-01 12/10/2010   16:47:46 Nesomys   rufus                 1
4

1 回答 1

0

这是您data.frame的日期和时间

 dat <- data.frame(Photo.Date =
 c("6/10/2010","11/10/2010","12/10/2010","12/10/2010","12/10/2010","12/10/2010"),
 Photo.Time = c("00:01:00","00:28:00","04:39:22","04:39:27","16:47:41","16:47:46"))

然后使用strptime(strip time) 将日期转换为 POSIX 格式

date_vec <-strptime(paste(dat$Photo.Date, dat$Photo.Time), "%d/%m/%Y %H:%M:%S")

下一步是确定每次观察之间的时间差。为此,您需要比较观察 1 和 2、2 和 3、3 和 4...

first_date <- date_vec[1:(length(date_vec)-1)]
second_date <- date_vec[2:length(date_vec)]
second_gap <- difftime(second_date, first_date, units="mins")

确定相隔不到 10 分钟的间隙。您还需要添加TRUE以保持第一次。

dup_index <- second_gap>10
dup_index <- c(TRUE, dup_index)
dat[dup_index, ]

哪个返回

  Photo.Date Photo.Time
1  6/10/2010   00:01:00
2 11/10/2010   00:28:00
3 12/10/2010   04:39:22
5 12/10/2010   16:47:41

高温高压

于 2012-08-03T00:32:33.913 回答