定义一个计算元素的列

时间:2016-10-17 09:54:58

标签: r dataframe calculated-columns performancecounter

我有一个数据框:

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,反之亦然。

2 个答案:

答案 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))