Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-计算分配给相同编号的值_R_If Statement_Rows - Fatal编程技术网

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)

数据$first
df2请注意,如果前三行中的
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)