首页 > 解决方案 > 如何根据R中另一个变量的频率计算一个变量的百分比

问题描述

我不确定如何写出来,但我会展示我想要的代码。我试图确定某些人在多次发生的任务中的准确性,但是,有大量的案例。

names <- c("James", "James", "James", "James", "James", "John", "John", "Fred")
outcome <- c("successful", "unsuccessful", "unsuccessful", "successful", "successful", "successful",
         "unsuccessful", "unsuccessful")
accuracy <- c("60%", "60%", "60%", "60%", "60%", "50%", "50%", "0%")
df <- data.frame(names, outcome, accuracy)

在上面的例子中,我显然手动输入了数据,但我想知道如何编写一个代码来查看与人名相关的成功/不成功结果的频率,然后打印总实例的百分比在准确度列中成功。

我不确定从哪里开始,希望这是一个我没想到的简单解决方案!

提前致谢

标签: rfrequencypercentage

解决方案


使用ave.

df$accuracy <- NULL

df <- transform(df, accuracy=ave(outcome %in% "successful", names, 
                                 FUN=function(x) paste0(sum(x)/length(x)*100, "%")))
df
#   names      outcome accuracy
# 1 James   successful      60%
# 2 James unsuccessful      60%
# 3 James unsuccessful      60%
# 4 James   successful      60%
# 5 James   successful      60%
# 6  John   successful      50%
# 7  John unsuccessful      50%
# 8  Fred unsuccessful       0%

推荐阅读