我有一个如下所示的数据表
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
不确定如何执行此操作。在实现此目标方面的任何帮助都将受到赞赏。
答案 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