为每个单独的行为事件应用一个函数 R

问题描述 投票:0回答:0

我有加速度计数据,每一行都标记为动物每秒显示的行为,简单示例:

时间 X_accel 行为
1 0.01 站立
2 0.01 站立
3 0.01 站立
4 0.02 站立
5 0.06 散步
6 0.07 散步
7 0.01 站立
8 0.02 站立

我有一个针对每个行为应用的功能的滚动窗口 - 但我希望它们应用于每个单独的行为事件,而不是与例如“站立”相关的所有数据分组在一起。

是否可以让它识别每个事件的结束,然后在下一个事件的开始重新开始?

或者,我考虑过是否可以在第一个事件(standing1)的“standing”中添加 1,在第二个事件中添加 2,依此类推,以使每个事件分开,尽管我不确定我是如何做到的d 修改代码以使其识别并循环通过许多单独的“站立”事件。

lst1 <- lapply(df[df$Behaviour == behaviour, c(2)], \(x) rollapply(x,
                                                                             FUN = time_domain_summary, 
                                                                                width = window.size, 
                                                                                by = window.step, 
                                                                                align = c("left"), 
                                                                                partial = FALSE))

其中:“行为”定义为站立,time_domain_summary = 要计算的特征(平均值、中位数等),window.size 和 window.step 定义为例如大小为 2,步长为 0.1

目前,输出是一个滚动窗口,横跨行为列中包含“站立”的所有行,就好像它们都是一个长事件但我希望尽可能将它们应用于每个单独的事件。

r lapply accelerometer rollapply
© www.soinside.com 2019 - 2024. All rights reserved.