在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