我正在尝试重构一些原始数据,并且我有点坚持寻找最有效/正确的方法来存储聚合函数的输出,该函数给出了每个条件的正确响应“编码为1”的平均准确度得分我的数据集。
set.seed(101)
df <- data.frame(RT=rnorm(30, 100, 20),
Condition=sample(c("Green","Red","Blue"),10, replace=T),
Image=sample(c("Cow", "Horse", "Giraffe"), 10, replace=T),
Response=sample(c("Cow", "Horse", "Giraffe"), 10, replace=T))
df$Accuracy <- ifelse(df$Image == df$Response, 1, 0)
con_avg_accuracy <- aggregate(Accuracy~Condition, df, FUN = mean)
con_avg_accuracy <- data.frame(Condition=c("acc_g","acc_m","acc_n"), Accuracy=con_avg_accuracy$Accuracy)
这是我一直在尝试做的一个想法,在某种程度上它是有效的,因为它将我的聚合输出存储到数据帧并更改条件名称,但我觉得有更好的方法可以做到这个(也许通过管道输入?)。另外,我似乎无法弄清楚如何将输出值添加到数据框中,其中新的条件名称是列,条件的每个平均分数在行中。
我希望这是有道理的,任何建议将不胜感激。 非常感谢。
以下是如何做类似的事情,但使用 dplyr 中的
summarise()
:
dplyr::summarise(df, Condition = paste0("acc_", tolower(substr(Condition[1], 1, 1))), Accuracy = mean(Accuracy), .by = Condition)
输出:
Condition Accuracy
1 acc_g 0.6000000
2 acc_b 0.3333333
3 acc_r 0.5000000