在df1中,我需要用df2中的相应值替换msec的值。根据条件集,用其他数据帧中的值替换数据帧中的值
df1 <- data.frame(ID=c('rs', 'rs', 'rs', 'tr','tr','tr'), cond=c(1,1,2,1,1,2),
block=c(2,2,4,2,2,4), correct=c(1,0,1,1,1,0), msec=c(456,678,756,654,625,645))
df2 <- data.frame(ID=c('rs', 'rs', 'tr','tr'), cond=c(1,2,1,2),
block=c(2,4,2,4), mean=c(545,664,703,765))
在DF1,如果correct==0
,然后引用df2
与ID
,cond
和block
匹配值。将df1
中的msec
的值替换为df2
中mean
的相应值。
例如,df1中的第二行有correct==0
。因此,在df2
找到相应的行,其中ID=='rs'
,cond==1
,block==2
并使用平均值(mean=545
)替换msec的值(msec=678
)。请注意,在df1 ID,block和cond的组合中,可以重复,但每个组合在df2中只出现一次。
'df1 [c(list(correct = 0),df2),on =。(correct,ID,cond,block),msec:= i.mean]'?我想这几乎是一样的。也许值得一提的是,这个更新df1而不是制作一个新表格(如dplyr变体)。 – Frank
这太好了。谢谢! – rds