我想检查十分位数值的排名顺序。它应该按降序排列。这意味着第一个十分位数必须具有最大百分比分数。该列如下所示 -
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))
代码的问题 - 它不会返回按顺序存在中断的十进制级别,而且我也希望&#34;满意&#34;代替&#34; TRUE&#34;。
答案 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
}