r - 如何跟踪拆分在我的数据框中的位置?
问题描述
我有一些带有 ID 和时间戳的动物跟踪 GPS 数据。
# prep the data
ID = c(rep("A",5), rep("B",5))
DateTime = c("2014-09-25 08:39:45", "2014-09-25 08:39:48", "2014-09-25 08:40:44", "2014-09-25 09:04:00","2014-09-25 09:04:10", "2014-09-25 08:33:32", "2014-09-25 08:34:41", "2014-09-25 08:35:24", "2014-09-25 09:04:00", "2014-09-25 09:04:09")
speed = c(1:10)
df = data.frame(ID,DateTime,speed, stringsAsFactors = FALSE)
df$DateTime<-as.POSIXct(df$DateTime, tz = "UTC")
如果重定位之间的时间间隔很大(例如 GPS 单元离线了一段时间),我可以拆分数据。
library(dplyr)
df %>%
group_by(ID) %>%
mutate(timeDiff = c(NA, difftime(tail(DateTime, -1), head(DateTime, -1), units="sec"))) %>%
mutate(newID = paste0(ID, cumsum(!is.na(timeDiff) & timeDiff > 100))) %>%
ungroup()
这给了我以下输出:
# A tibble: 10 × 5
# ID DateTime speed timeDiff newID
# <chr> <dttm> <int> <dbl> <chr>
# 1 A 2014-09-25 08:39:45 1 NA A0
# 2 A 2014-09-25 08:39:48 2 3 A0
# 3 A 2014-09-25 08:40:44 3 56 A0
# 4 A 2014-09-25 09:04:00 4 1396 A1
# 5 A 2014-09-25 09:04:10 5 10 A1
# 6 B 2014-09-25 08:33:32 6 NA B0
# 7 B 2014-09-25 08:34:41 7 69 B0
# 8 B 2014-09-25 08:35:24 8 43 B0
# 9 B 2014-09-25 09:04:00 9 1716 B1
# 10 B 2014-09-25 09:04:09 10 9 B1
但我想在原始 ID 名称和拆分时附加的新标识符之间放置一个分隔符。所以我最终会得到 A_0、A_0、A_0、A_1 等。
我怎样才能做到这一点?
解决方案
推荐阅读
- r - sparklyr 使用 stringr 改变行为
- java - 如何在 spigot 1.16.4 中获取玩家的 ping
- javascript - 如何在 React 中使用来自您的 passportjs 策略的访问消息
- r - 在 R 中查找最大值
- clang - lld 链接:错误:未定义符号:_mm_set_ps
- java - guacamole1.2 auth-cas 引发 NullPointerException
- pytorch - 是否有内置方法来确保每批图像大小匹配?
- r - 识别样条函数中节点的位置
- vb.net - BackgroundWorker 和 ShowDialog()
- react-native - 我在将参数传递给反应本机导航的路线时遇到问题。`route.params` 是未定义的抱歉我有点新反应原生