R-计算分配给相同编号的值
关于这些数据,我有一个问题:R-计算分配给相同编号的值,r,if-statement,rows,R,If Statement,Rows,关于这些数据,我有一个问题: 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被观察时,Time总是指定总的观察时间,所以我只需要在新指示1时总结第
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被观察时,Time总是指定总的观察时间,所以我只需要在新指示1时总结第一次,比如350+20+50
一个if
循环类似:
if (data$3 == 1) {
sum <- data[:,2] }
if(数据$3==1){
sum使用plyr软件包中的ddply
(mydata是您的数据,col3实际上是数据中名为col3的第3列
我的数据
> 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
data=read.table(text=)
1次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
,标头=TRUE)
数据$firstdf2请注意,如果前三行中的X3
=1,我们的答案会给出不同的结果,因为20
出现在两个不同的组中的time
中,而X3
在两个组中都会是1。@马克·米勒,非常感谢你用我的答案指出这个问题!你的解决方案更好。
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
df2 <- unique(df[df$X3 == 1, c("time", "X3")])
sum(df2$time)