2016-11-04 9 views
0

Я пытаюсь найти простой способ найти наибольший показатель меньше, чем X в R. В качестве примера:Простой способ отобразить из упорядоченного множителя в R непосредственно на предыдущий уровень?

>f = factor(c("a", "b", "c"), ordered = T) 
>f 
[1] a b c 
Levels: a < b < c 

То, что я хочу есть функция «предыдущая», которая ведет себя как:

>prev(f[3]) 
[1] b 
Levels: a < b < c 
>prev(f[2]) 
[1] a 
Levels: a < b < c 
>prev(f[1]) 
[1] NA 

Это кажется очень простым, но я ничего не могу найти, любая помощь очень ценится. Спасибо!

+1

'пред = функция (е, IDX) уровни (е) [IDX-1]' – user20650

+0

небольшое улучшение @ user20650 функции 'предыдущая = функции (F, IDX) IfElse (IDX <= 1, Н.А., уровни (f) [idx-1]) '(при условии, что OP не действительно нуждается в печати порядка уровней после результата ....) – agenis

+0

@agenis; или 'function (f, idx) c (NA, levels (f)) [idx]' – user20650

ответ

0

Что-то вроде этого должно работать.

prev <- function(x){ 
    levs <- levels(x) 
    index <- as.integer(x) 
    ifelse(index == 1, NA, levs[index -1 ]) 
}