gpt4 book ai didi

R函数确定时间序列中的行是否与前一行不同并从列表中提取两行

转载 作者:行者123 更新时间:2023-12-04 10:21:20 25 4
gpt4 key购买 nike

我有一个来自跟踪它们运动的遥测数据集的 14 个个体生物体的列表。我很想弄清楚他们是否在监控期间的任何时候跨越了一些特定的障碍。这 14 个个体当前存储在一个列表中,检测范围从 100 到 100,000 不等。

数据集的示例如下:

Date        Time      Individual      Location
2019-04-25 06:16:29 A69-1601-26907 DI 03
2019-04-25 06:23:31 A69-1601-26907 DI 03
2019-04-25 06:52:17 A69-1601-26907 BR 04
2019-04-25 07:41:31 A69-1601-26907 BR 04
2019-04-25 07:59:13 A69-1601-26907 BR 04
2019-04-25 08:16:19 A69-1601-26907 DI 03
2019-04-25 08:33:42 A69-1601-26907 DI 03

目标是提取位置已更改的两行。例如,BR 04 和它之前的那个(06:23:31 和 06:52:17 行)并将它们放在自己的数据框中。然后还要提取 7:59:13 和 8:16:19 的行,因为这表示此人再次越过障碍。对这个人的整个数据集执行此操作。最终获得该个人所有过境的数据帧。

然后对列表中的其他 13 个人再次执行相同的功能。它们可以全部附加到同一个数据帧中,也可以在列表中单独存在。

我尝试将 for 循环与 ifelse 语句一起使用,但它不返回任何内容。

谢谢!

最佳答案

假设您可以使用 tidyverse,并假设您的数据框名为 df :

library(tidyverse)

df %>%
group_by(Individual) %>%
filter((Location != lag(Location)) | Location != lead(Location))

您可以省略 group_by如果您的数据集中只有一个个人。

关于R函数确定时间序列中的行是否与前一行不同并从列表中提取两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60830641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com