r - r:回合的新可变持续时间
问题描述
我正在使用加速度计数据(SB 列),并想添加一个变量来计算活动回合的长度,例如坐(SB),并在人起床后重新开始计数(“SB_count”)。在第二步中,我想创建一个第二个变量(“SB_bout”,它只保留最终的回合长度值。
我已经坚持了一段时间,可能是因为我使用了错误的搜索词,所以如果有人能指出我正确的方向,我会非常感激它。
这应该是这样的:
SB SB_count SB_bout
1 1 1 0
2 1 2 0
3 1 3 3
4 0 0 0
5 1 1 0
6 1 2 2
解决方案
想我用你的玩具例子破解了它。对于 SB_bout,我使用@Tommy的函数来查找向量中的局部峰值。我认为它应该对您可能拥有这种格式的其他数据起到作用,但是您应该看看该函数的细节。
Data <- data.frame(SB = c(1,1,1,0,1,1))
Data$SB_count <- ave(Data$SB, cumsum(Data$SB==0), FUN=cumsum)
# Find peaks function
localMaxima <- function(x) {
# Use -Inf instead if x is numeric (non-integer)
y <- diff(c(-.Machine$integer.max, x)) > 0L
rle(y)$lengths
y <- cumsum(rle(y)$lengths)
y <- y[seq.int(1L, length(y), 2L)]
if (x[[1]] == x[[2]]) {
y <- y[-1]
}
y
}
Data$SB_bout <- Data$SB_count
Data$SB_bout[-localMaxima(Data$SB_count)] <- 0
Data
SB SB_count SB_bout
1 1 1 0
2 1 2 0
3 1 3 3
4 0 0 0
5 1 1 0
6 1 2 2
推荐阅读
- javascript - Firebase Cloud Functions onWrite 获取所有新条目
- java - Hibernate + Spring + MySQL:有时在一个事务中所做的更改在下一个事务中不可见
- ubuntu - Linux 服务器 xmpp ejabberd 启动,状态未运行?
- php - 如何在 codeigniter 中升级加密库
- python - 在列表python中搜索列表
- java - Java 8 中 parallelStream 的变异减少
- python - wb.DataReader 后的方括号
- mysql - MySQL在每组中选择第一个,第二个和最后一个值的最佳方法
- ssh - 如果我在运行程序时断开笔记本电脑与树莓派的连接会发生什么?
- azure - 多次读取 BrokeredMessage 正文