【发布时间】:2020-06-23 14:48:07
【问题描述】:
我有一个数据框,其 id 和 value 列如下所示,但想根据 value 列中的值按 id 组确定状态列。
x <- data.frame(id = c(rep(1,10), rep(2,10), rep(3,10)),
serial = rep(1:10,3),
value = c(rep(1,4), rep(0,3), rep(1,3),
rep(1,4), rep(0,1), rep(-1,2), rep(1,3),
rep(c(1,0),5)),
status = c(rep("Fluctuating", 10),
rep("Fluctuating", 10),
rep("Not fluctuating", 10)))
id serial value status
1 1 1 1 Fluctuating
2 1 2 1 Fluctuating
3 1 3 1 Fluctuating
4 1 4 1 Fluctuating
5 1 5 0 Fluctuating
6 1 6 0 Fluctuating
7 1 7 0 Fluctuating
8 1 8 1 Fluctuating
9 1 9 1 Fluctuating
10 1 10 1 Fluctuating
11 2 1 1 Fluctuating
12 2 2 1 Fluctuating
13 2 3 1 Fluctuating
14 2 4 1 Fluctuating
15 2 5 0 Fluctuating
16 2 6 -1 Fluctuating
17 2 7 -1 Fluctuating
18 2 8 1 Fluctuating
19 2 9 1 Fluctuating
20 2 10 1 Fluctuating
21 3 1 1 Not fluctuating
22 3 2 0 Not fluctuating
23 3 3 1 Not fluctuating
24 3 4 0 Not fluctuating
25 3 5 1 Not fluctuating
26 3 6 0 Not fluctuating
27 3 7 1 Not fluctuating
28 3 8 0 Not fluctuating
29 3 9 1 Not fluctuating
30 3 10 0 Not fluctuating
这里,如果三个或更多的 1 后面跟着 3 个或更多(0 或 -1),再跟着 3 个或更多的 1,则认为一个组在波动。如果三个或更多交替的 0s-1s-0s、-1s-0s-1s 等也被认为是波动的。
想知道分配状态列的最佳方法是什么,最好使用dplyr?
谢谢!
【问题讨论】:
-
Fluctuating序列是否应该始终以 1 开头,或者它也可以以 0 开头,只要 1 和 0 至少交替 3 乘 3? -
只要他们交替!
标签: r conditional-statements dplyr rle