我有一个数据框:
xxx:
time x_int
0.000 TRUE
0.001 TRUE
0.002 TRUE
0.003 FALSE
0.004 FALSE
0.005 TRUE
0.006 FALSE
我想要的是:
xxx:
time x_int n
0.000 TRUE 3
0.001 TRUE 3
0.002 TRUE 3
0.003 FALSE 2
0.004 FALSE 2
0.006 TRUE 1
0.007 FALSE 1
因此,我希望在TRUE
之前计算FALSE
,反之亦然。
答案 0 :(得分:0)
我们可以使用rleid
中的data.table
在'x_int'上创建分组变量,并获取每个组的获取行数(.N
)并分配({{ 1}})它到'n'
:=
答案 1 :(得分:0)
在基地R:
v <- rle(d$x_int)$lengths
d$n <- rep(v, v)
# time x_int n
#1 0.000 TRUE 3
#2 0.001 TRUE 3
#3 0.002 TRUE 3
#4 0.003 FALSE 2
#5 0.004 FALSE 2
#6 0.005 TRUE 1
#7 0.006 FALSE 1
d <- structure(list(time = c(0, 0.001, 0.002, 0.003, 0.004, 0.005,
0.006), x_int = c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE
)), .Names = c("time", "x_int"), class = "data.frame", row.names = c(NA,
-7L))