【问题标题】:How to remove duplicate entries if they occur within a certain time frame in R如果重复条目发生在R中的某个时间范围内,如何删除它们
【发布时间】:2012-08-02 20:47:22
【问题描述】:

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

如果重复的物种出现在彼此之间 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

【问题讨论】:

  • 欢迎来到 StackOverflow。也许如果您制作了一个 reproducible example 来展示您的问题/问题,人们会发现它更容易回答。在您的示例中,使用dput() 将您的数据粘贴到问题中。
  • 您使用的是什么数据库? “r”不是数据库。如果数据在“r”中,则应删除数据库标签。
  • 抱歉,我是新来在这个论坛上发帖的,所以仍然对格式有感觉......

标签: r remove-if


【解决方案1】:

这是您的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(剥离时间)将日期转换为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

HTH

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2019-11-07
    • 2018-12-11
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多