我对这些数据有疑问:
data =
1 time 3
2 20 0
3 20 0
4 20 0
5 350 1
6 350 1
7 350 1
8 10 0
9 20 1
10 37 0
11 37 0
12 50 1
13 50 1
14 40 0
15 40 0
16 40 0
我想总结某人花在看1的时间(如第3栏索引)。时间总是指定1时的总观看时间 - 所以我只需要在第一次总结1时新指示 - 例如350 + 20 + 50。
if
- 循环如:
if (data$3 == 1) {
sum <- data[:,2] }
不起作用,因为所有值都汇总了。我需要的东西总是只能在0之后的前1个地址。
答案 0 :(得分:0)
使用plyr包中的ddply
(mydata是您的数据,col3实际上是数据中的第3列,名称为col3。
MYDATA
> mydata
col1 time col3
1 1 20 0
2 2 20 0
3 3 20 0
4 4 350 1
5 5 350 1
6 6 350 1
7 7 10 0
8 8 20 1
9 9 37 0
10 10 37 0
11 11 50 1
12 12 50 1
13 13 40 0
14 14 40 0
15 15 40 0
library(plyr)
ddply(mydata,.(col3), summarize, mysum=sum(unique(time)))
col3 mysum
1 0 107
2 1 420
答案 1 :(得分:0)
data = read.table(text = '
1 time 3
2 20 0
3 20 0
4 20 0
5 350 1
6 350 1
7 350 1
8 10 0
9 20 1
10 37 0
11 37 0
12 50 1
13 50 1
14 40 0
15 40 0
16 40 0
', header = TRUE)
data$first <- sequence(rle(data$time)$lengths)
data
sum(data$time[data$first==1 & data$X3==1])
# [1] 420
答案 2 :(得分:0)
df2 <- unique(df[df$X3 == 1, c("time", "X3")])
sum(df2$time)