0

今天的第一篇文章。

目前我正在进行我的研究,我必须分析心率数据。现在我已经完成了我的大部分代码,我发现我正在使用的算法(RHRV)利用了心跳的出现,并具有匹配的秒数。

因此,我的简单 txt 文件(以秒为单位)如下所示(1 列,433 行):0.905 1.943 2.941 4.005 4.998 5.921

这些是心跳和它们发生的第二次。

我现在的问题是:我如何删除不可能发生的事件,例如:2 次发生/心跳发生的速度快于 0.2 秒(200 毫秒)

是否有一种简单的方法或功能可以让我更改数据?

期待您的回答!

干杯,

桑德

4

2 回答 2

0
# create some random values
set.seed(3)
heartBeats <- sort(runif(10))

# which of them are reasonable?
keepThese <- heartBeats - lag(heartBeats) > 0.02
keepThese[is.na(keepThese)] <- TRUE # remove NAs

# and now subset the original vector
heartBeats[keepThese]
于 2019-12-18T10:34:47.923 回答
0

我想不出一种矢量化的方式来做到这一点,但这可以工作。请注意,这对于长向量来说会很昂贵,因为表达式y <- c(y, x[i])将继续重建向量y

x <- c(171.1156, 171.1345, 171.256, 171.309, 171.465, 171.4986, 171.986, 172.563)
m <- 1
y <- numeric(0)
y[m] <- x[1]
for (i in 2:NROW(x)) {
    if (y[m] + 0.2 < x[i]) {
        m <- m + 1
        y <- c(y, x[i])
    }
}
y
# output
[1] 171.1156 171.4650 171.9860 172.5630

我遍历 的元素,x每次遇到一个与 中的最新接受值相差超过 0.2 的值时y,我y都会用它进行更新x[i]

于 2019-12-18T10:35:28.273 回答