2015-06-20 70 views
-1

我想檢查等級排序的等級值。它應該按降序排列。這意味着第一個十分位必須有最高百分比分數。列看起來像下面 -檢查R中的等級排序

pct.of.total 
13.84 
12.80 
13.15 
11.76 
11.07 
9.00 
9.69 
8.30 
7.27 
3.11 

在這種情況下,第3等分(13.15)具有比第二等分(12.80)更多的分數。如果是這種情況,我想R函數返回 - "Rank Ordering - Not satisfied at 3rd decile"。如果值按降序排列,我想R函數返回 - "Rank Ordering - Satisfied"

我使用這個代碼 -

message("Rank Ordering Status : ", all(diff(final.gaint$pct.of.total) <= 0)) 

與代碼的問題 - 它不返回,突破才能存在等分水平,我也想「滿意」來代替「真」。

回答

1
n <- sapply(which(diff(final.gain$pct.of.total) > 0), getOrd) 
if(all(diff(final.gain$pct.of.total) <= 0)) { 
    return("Rank Ordering - Satisfied") 
} else { 
    sprintf("Rank Ordering - Not satisfied at %s decile", n) 
} 

另外一個好處,從這個網站here該格式序數的函數。

getOrd <- function(num) { 
    result <- "" 
    if (!(num %% 100 %in% c(11, 12, 13))) { 
    result <- switch(as.character(num %% 10), 
        "1" = {paste0(num, "st")}, 
        "2" = {paste0(num, "nd")}, 
        "3" = {paste0(num, "rd")}, 
        paste0(num, "th")) 
    } else { 
    result <- paste0(num, "th") 
    } 
    result 
} 
+0

非常感謝。它像一個魅力。 – Riya