r创建事件表

时间:2018-09-05 20:45:40

标签: r dataframe

我有一个如下所示的数据表

  Event   Time
  0       0
  0       0
  0       0
  0       0
  1       1
  0       7
  0       11
  1       20
  0       21

在这里,1表示事件=是,0表示事件=否。我要执行的操作是将此原始数据集转换为四列,即时间,SampleSize,事件,非事件。

    time  SampleSize  Event      Non-Event
    0     9           0          4
    1     5           1          0
    7     4           0          1
    11    3           0          1
    20    2           1          0
    21    1           0          1

不确定如何执行此操作。在实现此目标方面的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

请使用基数R回答:

# raw data
d1 <- data.frame(Event = c(0,0,0,0,1,0,0,1,0), 
                 Time = c(0,0,0,0,1,7,11,20,21))

d2 <- as.data.frame.matrix(table(d1$Time, d1$Event))
colnames(d2) <- c("Non-Event", "Event")
times <- as.numeric(rownames(d2))
d3 <- cbind(time = times, 
            SampleSize = sapply(times, function(x){ 
              nrow(d1) - min(which(x == d1$Time)) + 1
              }),
            d2)
rownames(d3) <- NULL
d3
#  time SampleSize Non-Event Event
#1    0          9         4     0
#2    1          5         0     1
#3    7          4         1     0
#4   11          3         1     0
#5   20          2         0     1
#6   21          1         1     0