【发布时间】:2019-12-07 11:29:37
【问题描述】:
我正在尝试创建一个新列,仅当记录的观察发生在最后一次观察之后的特定时间之后才为观察(行)分配唯一值(请参阅数据框)。
上下文:
我设置了摄像头陷阱来观察哪些物种访问了特定的地块,species 的每次访问都应该得到一个唯一的visitID。实际的数据库包含更多的复杂性,但这是我遇到的主要问题。
new.df <- data.frame(
species = c("A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B"),
visit.time = c(seq(ymd_hm('2015-01-01 00:00'), ymd_hm('2015-01-01 00:10'), by = '2 mins'),
seq(ymd_hm('2015-01-01 00:00'), ymd_hm('2015-01-01 00:10'), by = '2 mins'))
)
> new.df
species visit.time
1 A 2015-01-01 00:00:00
2 A 2015-01-01 00:02:00
3 A 2015-01-01 00:04:00
4 A 2015-01-01 00:06:00
5 A 2015-01-01 00:08:00
6 A 2015-01-01 00:10:00
7 B 2015-01-01 00:00:00
8 B 2015-01-01 00:02:00
9 B 2015-01-01 00:04:00
10 B 2015-01-01 00:06:00
11 B 2015-01-01 00:08:00
12 B 2015-01-01 00:10:00
我想创建一个名为“visitID”的新列,用于记录每个物种的访问。但是,我只想为上次记录的访问后至少 2 分钟发生的访问分配一个唯一编号:
> new.df
species visit.time visitID
1 A 2015-01-01 00:00:00 1
2 A 2015-01-01 00:02:00 -
3 A 2015-01-01 00:04:00 2
4 A 2015-01-01 00:06:00 -
5 A 2015-01-01 00:08:00 3
6 A 2015-01-01 00:10:00 -
7 B 2015-01-01 00:00:00 1
8 B 2015-01-01 00:02:00 -
9 B 2015-01-01 00:04:00 2
10 B 2015-01-01 00:06:00 -
11 B 2015-01-01 00:08:00 3
12 B 2015-01-01 00:10:00 -
其中- 只是一个NA
我通常会尝试使用dplyr:mutate 和条件条件ifelse,问题是我不知道如何计算上次访问的时间。
如果有更多细节可以提供,请告诉我。谢谢!
【问题讨论】:
-
您的示例数据中的所有访问都发生在上次访问后两分钟。他们不应该都有一个ID吗?
-
那是我的错,我试图让这个例子简单,所以我决定用 2 分钟。但是下面的回复都很棒!
标签: r datetime indexing conditional-statements dplyr