关于这些数据,我有一个问题:
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
-loop的:
if (data$3 == 1) {
sum <- data[:,2] }
不起作用,因为所有的值都会被总结。我需要的东西,总是地址,只有前1后,0。
发布于 2013-08-26 13:49:36
使用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
发布于 2013-08-26 14:07:11
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
发布于 2013-08-26 14:12:20
df2 <- unique(df[df$X3 == 1, c("time", "X3")])
sum(df2$time)
https://stackoverflow.com/questions/18445653
复制相似问题