将聚合函数的输出存储到新的数据帧中

问题描述 投票:0回答:1

我正在尝试重构一些原始数据,并且我有点坚持寻找最有效/正确的方法来存储聚合函数的输出,该函数给出了每个条件的正确响应“编码为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)

这是我一直在尝试做的一个想法,在某种程度上它是有效的,因为它将我的聚合输出存储到数据帧并更改条件名称,但我觉得有更好的方法可以做到这个(也许通过管道输入?)。另外,我似乎无法弄清楚如何将输出值添加到数据框中,其中新的条件名称是列,条件的每个平均分数在行中。

我希望这是有道理的,任何建议将不胜感激。 非常感谢。

r dataframe aggregate data-wrangling
1个回答
0
投票

以下是如何做类似的事情,但使用 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
© www.soinside.com 2019 - 2024. All rights reserved.