所以我随着时间的推移测量了x和y的位置。测量有时会有间隙(没有测量)。 现在我想只在连续的增量不大于30秒时绘制线段。
我怎样才能在R?
中这样做数据:
# A tibble: 21 x 5
x y timestamp delta cut
<dbl> <dbl> <dttm> <dbl> <lgl>
1 203.09395 348.038092 2018-01-08 17:01:41 13 FALSE
2 180.01089 278.710786 2018-01-08 17:02:05 24 FALSE
3 164.64089 186.764107 2018-01-08 17:02:29 24 FALSE
4 113.96565 70.088552 2018-01-08 17:02:41 12 FALSE
5 59.46439 103.576389 2018-01-08 17:02:53 12 FALSE
6 354.88161 5.951221 2018-01-08 17:05:07 134 TRUE
7 446.18112 169.600388 2018-01-08 17:05:19 12 FALSE
8 480.14825 223.918125 2018-01-08 17:05:31 12 FALSE
9 512.22982 222.538262 2018-01-08 17:05:43 12 FALSE
10 534.70655 234.280080 2018-01-08 17:05:55 12 FALSE
我想要的结果是,一旦delta超过theshold值,就会创建一个具有新级别的额外因子,因此我可以将这些段视为不同。
# A tibble: 21 x 5
x y timestamp delta cut
<dbl> <dbl> <dttm> <dbl> <lgl>
1 203.09395 348.038092 2018-01-08 17:01:41 13 FALSE
2 180.01089 278.710786 2018-01-08 17:02:05 24 FALSE
3 164.64089 186.764107 2018-01-08 17:02:29 24 FALSE
4 113.96565 70.088552 2018-01-08 17:02:41 12 FALSE
5 59.46439 103.576389 2018-01-08 17:02:53 12 FALSE
6 354.88161 5.951221 2018-01-08 17:05:07 134 TRUE
在这里分裂......
7 446.18112 169.600388 2018-01-08 17:05:19 12 FALSE
8 480.14825 223.918125 2018-01-08 17:05:31 12 FALSE
9 512.22982 222.538262 2018-01-08 17:05:43 12 FALSE
10 534.70655 234.280080 2018-01-08 17:05:55 12 FALSE
我调查了cut
和dplyr
,但在R中看不到明显的解决方案?
答案 0 :(得分:0)
鉴于您已经有一个变量cut
(如输出中所示),如果您想要一个为每个剪辑提供新级别的变量,您只需添加:
new_var <- as.factor(cumsum(cut))
作为数据集的新变量
答案 1 :(得分:0)
这取决于您想要的输出,但您可以使用split
和cut
split(data, cut(df$timestamp, seq(min(df$timestamp), max(df$timestamp) + 31, by = 30)))
您可以修改cut
选项include.lowest
&amp; right
根据需要定义间隔