[英]How to rank ID's using fail percentage
我有一個這樣的數據框
library(plyr)
library(dplyr)
ID <- c("ID001","ID002","ID003","ID004","ID005",
"ID006","ID007","ID008","ID009","ID010")
Fail <- c(3,7,2,3,9,7,3,2,3,9)
Pass <- c(0,0,4,26,1,1,3,0,9,9)
df <- data.frame(ID,Fail,Pass)
我添加另一列來計算失敗百分比
df$Fail_Percentage <- (df$Fail/(df$Fail+df$Pass))*100
現在,我訂購此數據框並創建一個變量“ Rank”
library(data.table)
df <- df%>%
arrange(-Fail_Percentage) %>%
mutate(Rank = rleid(Fail_Percentage))
df
我得到這個輸出
ID Fail Pass Fail_Percentage Rank
ID001 3 0 100.00000 1
ID002 7 0 100.00000 1
ID008 2 0 100.00000 1
ID005 9 1 90.00000 2
ID006 7 1 87.50000 3
ID007 3 3 50.00000 4
ID010 9 9 50.00000 4
ID003 2 4 33.33333 5
ID009 3 9 25.00000 6
ID004 3 26 10.34483 7
這里的問題是我以這種方式創建重復的等級。 我想通過優先選擇“失敗”來進行排名。
例如:ID001,ID002,ID008都具有等級1,但是我想通過優先選擇最高通過失敗率來進行排名。 因此,ID002的排名為1,ID001的排名為2,ID008的排名為3。我想這樣做,對其他條目也進行類似的排名。
我想要的輸出是
ID Fail Pass Fail_Percentage Rank
ID002 7 0 100.00000 1
ID001 3 0 100.00000 2
ID008 2 0 100.00000 3
ID005 9 1 90.00000 4
ID006 7 1 87.50000 5
ID010 9 9 50.00000 6
ID007 3 3 50.00000 7
ID003 2 4 33.33333 8
ID009 3 9 25.00000 9
ID004 3 26 10.34483 10
我們怎樣才能做得更好? 有人可以幫助我指出正確的方向嗎?
ID <- c("ID001","ID002","ID003","ID004","ID005",
"ID006","ID007","ID008","ID009","ID010")
Fail <- c(3,7,2,3,9,7,3,2,3,9)
Pass <- c(0,0,4,26,1,1,3,0,9,9)
df <- data.frame(ID,Fail,Pass)
df$Fail_Percentage <- (df$Fail/(df$Fail+df$Pass))*100
僅使用data.table
df <- setDT(df)[order(-Fail_Percentage, -Fail)][, Rank := 1:.N]
您已經可以通過使用第二個參數進行安排來達到預期的順序:
library(dplyr)
df = structure(list(ID = structure(1:10, .Label = c("ID001", "ID002",
"ID003", "ID004", "ID005", "ID006", "ID007", "ID008", "ID009",
"ID010"), class = "factor"), Fail = c(3, 7, 2, 3, 9, 7, 3, 2,
3, 9), Pass = c(0, 0, 4, 26, 1, 1, 3, 0, 9, 9)), .Names = c("ID",
"Fail", "Pass"), row.names = c(NA, -10L), class = "data.frame")
df = df %>%
mutate(Fail_Percentage = Fail / (Fail + Pass) * 100) %>%
arrange(-Fail_Percentage, -Fail) %>%
mutate(Rank = order(-Fail_Percentage))
> df
ID Fail Pass Fail_Percentage Rank
1 ID002 7 0 100.00000 1
2 ID001 3 0 100.00000 2
3 ID008 2 0 100.00000 3
4 ID005 9 1 90.00000 4
5 ID006 7 1 87.50000 5
6 ID010 9 9 50.00000 6
7 ID007 3 3 50.00000 7
8 ID003 2 4 33.33333 8
9 ID009 3 9 25.00000 9
10 ID004 3 26 10.34483 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.