Как разместить данные для определенного столбца с помощью ddply?
Я хотел бы знать, есть ли простой способ достичь того, что я опишу ниже, используяddply
, Мой фрейм данных описывает эксперимент с двумя условиями. Участники должны были выбирать между вариантамиA а такжеBи мы записали, сколько времени им понадобилось для принятия решения и были ли их ответы точными или нет.
я используюddply
создать средние по условию. КолонкаnAccurate
суммирует количество точных ответов в каждом условии. Я также хочу знать, сколько времени они приняли, чтобы решить и выразить это в колонкеRT
, Тем не менее, я хочу рассчитать среднее время откликатолько когда участники правильно ответили (Т.е.Accuracy==1
). В настоящее время приведенный ниже код может рассчитывать только среднее время реакции для всех ответов (точных и неточных). Есть ли простой способ изменить его, чтобы получить среднее время отклика, рассчитанное только в точных испытаниях?
Смотрите пример кода ниже и спасибо!
library(plyr)
# Create sample data frame.
Condition = c(rep(1,6), rep(2,6)) #two conditions
Response = c("A","A","A","A","B","A","B","B","B","B","A","A") #whether option "A" or "B" was selected
Accuracy = rep(c(1,1,0),4) #whether the response was accurate or not
RT = c(110,133,121,122,145,166,178,433,300,340,250,674) #response times
df = data.frame(Condition,Response, Accuracy,RT)
head(df)
Condition Response Accuracy RT
1 1 A 1 110
2 1 A 1 133
3 1 A 0 121
4 1 A 1 122
5 1 B 1 145
6 1 A 0 166
# Calculate averages.
avg <- ddply(df, .(Condition), summarise,
N = length(Response),
nAccurate = sum(Accuracy),
RT = mean(RT))
# The problem: response times are calculated over all trials. I would like
# to calculate mean response times *for accurate responses only*.
avg
Condition N nAccurate RT
1 6 4 132.8333
2 6 4 362.5000