簡體   English   中英

如何根據R中另一個變量的頻率計算一個變量的百分比

[英]How to calculate a percentage of one variable based on the frequency of another in 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)

在上面的例子中,我顯然已經手動輸入了數據,但我想知道如何編寫一個代碼來查看與人名相關的成功/不成功結果的頻率,然后打印總實例的百分比成功率列。

我不確定從哪里開始,希望這是一個我沒想到的簡單解決方案!

提前致謝

使用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%

這行得通嗎?

> df %>% group_by(names) %>% mutate(accuracy = paste0(100 * sum(outcome == 'successful')/n(),'%'))
# A tibble: 8 x 3
# Groups:   names [3]
  names outcome      accuracy
  <chr> <chr>        <chr>   
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%      

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM