首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:计算正确/错误按钮按下的百分比

R:计算正确/错误按钮按下的百分比
EN

Stack Overflow用户
提问于 2017-08-17 20:06:53
回答 2查看 138关注 0票数 0

我有一个数据,参与者看到面孔,必须按下7个按钮中的一个(每个按钮对应一种情绪),这给我留下了这样的数据:

代码语言:javascript
复制
    X...Emotion Intensity Response   Correct Button.RB
1       Anger       40%      Sad Incorrect         5
2         Sad      100%      Sad   Correct         5
3       Happy       50%    Happy   Correct         4
4       Anger      100%    Anger   Correct         1
5        Fear      100%     Fear   Correct         3

现在,我想要计算每种情绪的正确按钮按下的百分比和不正确的总百分比,以及某人犯的错误的种类(例如,对于“愤怒的脸”,有35%的错误反应,其中7.5%是‘悲伤’的按钮按下,22.5%是‘中性’的按钮按下等等……)

我想出了如何获得每个情绪的个体计数和正确/不正确:

代码语言:javascript
复制
count(df_fert, vars = c('X...Emotion','Correct'))

它为我提供了:

代码语言:javascript
复制
X...Emotion   Correct freq
1        Anger   Correct   26
2        Anger Incorrect   14
3      Disgust   Correct   11
4      Disgust Incorrect   29

有没有人知道我想要的计算百分比的方法?以及如何在响应类型中“细分”不正确的响应?

EN

回答 2

Stack Overflow用户

发布于 2017-08-17 21:04:12

很高兴看到你自己解决了这个问题。我尝试了一下,下面是我是如何做到的:

数据设置

代码语言:javascript
复制
# Setup
set.seed(1110)
Emot = c("Sad", "Happy", "Angry", "Fear", "Joy", "Neutral")
Emotion = sample(x = Emot, size = 50, replace = T)
Response = sample(x = Emot, size = 50, replace = T)
df = data.frame(Emotion,Response)
df$Correct = ifelse(Emotion==Response, "Correct", "Incorrect")

这提供了:

代码语言:javascript
复制
> head(df,10)
   Emotion Response   Correct
1    Angry      Joy Incorrect
2      Joy  Neutral Incorrect
3  Neutral  Neutral   Correct
4     Fear    Happy Incorrect
5    Happy  Neutral Incorrect
6      Sad    Happy Incorrect
7    Angry    Angry   Correct
8  Neutral      Sad Incorrect
9     Fear     Fear   Correct
10   Angry    Happy Incorrect

计数

要通过情感和反应的配对组合计算答案,请执行以下操作:

代码语言:javascript
复制
# Counting by Emotion and Response
df2 = aggregate(data = df, Correct ~ Emotion + Response, FUN = length)

这提供了:

代码语言:javascript
复制
> head(df2,10)
   Emotion Response Correct
1    Angry    Angry       1
2    Happy    Angry       1
3      Joy    Angry       1
4  Neutral    Angry       1
5      Sad    Angry       4
6    Angry     Fear       1
7     Fear     Fear       1
8    Happy     Fear       1
9      Joy     Fear       2
10 Neutral     Fear       2

百分比

要计算所有情绪和每种类型响应的正确百分比和错误百分比,请执行以下操作:

代码语言:javascript
复制
library(reshape2)
results = dcast(df2, Emotion ~ Response, value.var = "Correct")
results[is.na(results)] = 0
results[,-1] = round( results[,-1]/rowSums(results[,-1])*100, digits = 2)

这提供了:

代码语言:javascript
复制
> results
  Emotion Angry  Fear Happy   Joy Neutral   Sad
1   Angry  9.09  9.09 18.18 27.27   27.27  9.09
2    Fear  0.00 16.67 33.33 16.67   16.67 16.67
3   Happy 20.00 20.00  0.00 40.00   20.00  0.00
4     Joy 12.50 25.00 12.50 12.50   12.50 25.00
5 Neutral  9.09 18.18 27.27  0.00   18.18 27.27
6     Sad 44.44  0.00 11.11 22.22   22.22  0.00

例如:愤怒情绪被正确点击了9.09%,而它被错误地点击为快乐18.18%。

票数 1
EN

Stack Overflow用户

发布于 2017-08-17 20:32:15

我用下面的代码修复了这个问题:

代码语言:javascript
复制
freq <- count(df_fert, vars = c('X...Emotion','Response','Correct'))
freq$perc <- (freq$freq/40)*100
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45734697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档