Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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_Data.table - Fatal编程技术网

R ';如果';用于基于条件的连续试验的平均值

R ';如果';用于基于条件的连续试验的平均值,r,data.table,R,Data.table,我在下面有这个数据集,我想计算每个ID和条件下在一个佣金错误之前连续5次点击的平均值(扫视) 到目前为止,我已经尝试: Data[, roll := Reduce('+', shift(HIT, 0:4)), by =list(ID, CONDITION)] if (Data $roll == 5 & Data$COMISSION_ERROR[c(which(Data$roll == 5) +1), ] == 1) A<- with(Data, mean(SACCADIC_R

我在下面有这个数据集,我想计算每个
ID
条件下在一个佣金错误之前连续5次
点击的
平均值(扫视)

到目前为止,我已经尝试:

Data[, roll := Reduce('+', shift(HIT, 0:4)), by =list(ID, CONDITION)]

if (Data $roll == 5 & Data$COMISSION_ERROR[c(which(Data$roll == 5) +1), ] == 1)
 A<-  with(Data, mean(SACCADIC_RT[roll ==5]), by =list(ID, CONDITION))
输出的一个示例是:

    ID | CONDITION |  x
    1    square_1      209.6
    2    square_2      222.8

@rconradin

您可以使用
数据表
动物园
包的组合

require(data.table); require(zoo)
data[  , A := rollmeanr(SACCADIC_RT, k = 5, fill = NA)][
      roll == 5 & lead(COMMISSION_ERROR) == 1]
rollmeanr
来自
zoo
软件包

此外,为了完整性,如果只需要指定三列,则可以使用

data[  , A := rollmeanr(SACCADIC_RT, k = 5, fill = NA)][
      roll == 5 & lead(COMMISSION_ERROR) == 1, .(ID, CONDITION, A)]

您是否使用了其他软件包?能否提供所需输出的示例?在计算之前您是否
setkey
?这个数据集中有什么错误?在计算之前:
Data除了Data.table之外,我没有使用任何其他包@乔戈。关于如何改进我的代码有什么想法吗?谢谢你的回复。实际上,我得到了错误`error in eval(expr、envir、enclose):找不到函数“lead”`并且我确实
require(zoo)
。是否可以根据
ID
CONDITION
使用新列创建新的数据子集,而不是将列添加到现有的data.table中?我试着用
lag
代替,它似乎每连续5次点击就计算
平均值(扫视时间)
,但下一次试验是
commission\u ERROR==1
对不起
lead
lag
dplyr
的一部分。在
data.table
中的等价物实际上是
shift
。所以我尝试了
data[,roll:=Reduce(+',shift(HIT,0:4)),by=list(ID,CONDITION)]
data[,A:=rollmanr(SACCADIC\RT,k=5,fill=NA)][roll==5&shift(COMMISSION\u ERROR)==1],(ID,CONDITION,A)]
并且它在
A
列中为我提供了
NAs
。您想要
A
中的值是什么?是否有方法仅提取我感兴趣的
A
中的值?此时,
A
列会为每5次
点击保存
rollmeanr
,但不会只给出佣金错误之前的信息。不过,我只想对这些试验进行子集/聚合
data[  , A := rollmeanr(SACCADIC_RT, k = 5, fill = NA)][
      roll == 5 & lead(COMMISSION_ERROR) == 1, .(ID, CONDITION, A)]