相关疑难解决方法(0)

运行长度的累计和.这个循环可以被矢量化吗?

我有一个数据框,我在其上计算特定列的运行长度编码.列的值为dir-1,0或1.

dir.rle <- rle(df$dir)

然后,我获取运行长度并计算数据帧中另一列的分段累积和.我正在使用for循环,但我觉得应该有一种更聪明地做到这一点的方法.

ndx <- 1
for(i in 1:length(dir.rle$lengths)) {
    l <- dir.rle$lengths[i] - 1
    s <- ndx
    e <- ndx+l
    tmp[s:e,]$cumval <- cumsum(df[s:e,]$val)
    ndx <- e + 1
}
Run Code Online (Sandbox Code Playgroud)

为每次运行dir定义start s,和end 的运行长度e.上面的代码有效,但它不像惯用的R代码.我觉得如果没有循环,应该有另一种方法来做到这一点.

r vectorization plyr data.table

4
推荐指数
1
解决办法
2571
查看次数

根据时间序列中的间隙对行进行分组

我有一个 GPS 数据的时间序列,需要根据时间戳的间隙将其分割成更小的部分。

作为一个例子,考虑下面的数据帧,我想添加一个分段号来分段时间戳的每个“块”,从而在每次时间序列中存在至少30 秒的间隙时有效地吐出数据。

生成的 data.frame 看起来像这样:

   timestamp segment
1          1       1
2          3       1
3          5       1
4         10       1
5         42       2
6         45       2
7         92       3
8        156       4
9        160       4
10       162       4
11       163       4
12       164       4
13       200       5
14       203       5
Run Code Online (Sandbox Code Playgroud)

有什么方法可以有效地做到这一点吗?data.frame 是一个分组的 tbl_df(dplyr 包),具有多个不同的时间序列,并且可能非常大。

r

4
推荐指数
1
解决办法
469
查看次数

将序列中的值分配给一组连续的行,将某些行留空

我正在尝试将几个连续的行分组(并为它们分配相同的值),同时将一些行留空(当某个条件未满足时).

我的数据是位置(xy坐标),测量它们的日期/时间以及测量之间的时间跨度.以某种方式简化,它们看起来像这样:

ID   X     Y      Time    Span
1    3445  7671   0:00    -
2    3312  7677   4:00    4
3    3309  7680   12:00   8
4    3299  7681   16:00   4
5    3243  7655   20:00   4
6    3222  7612   4:00    8
7    3260  7633   0:00    4
8    3254  7641   8:00    8
9    3230  7612   0:00    16
10   3203  7656   4:00    4
11   3202  7678   8:00    4
12   3159  7609   20:00   12
...
Run Code Online (Sandbox Code Playgroud)

我想为在4小时的时间跨度内测量的每个位置序列分配一个值,并使我的数据看起来像这样:

ID   X     Y      Time    Span  Sequence
1    3445  7671   0:00    - …
Run Code Online (Sandbox Code Playgroud)

r rows sequence conditional-statements

3
推荐指数
1
解决办法
2006
查看次数