2015-10-08 3 views
1

Я пытаюсь работать с упорядоченной категориальной переменной. Кажется, что функции max min должны работать с упорядоченными категориями, но это не так.Возврат самого высокого уровня фактора

var<-factor(c("1","6","4","3","5","2"),levels=c("1","6","4","3","5","2")) 
max(levels(var)) 

Я хотел бы код, чтобы вернуть самый последний уровень фактора (2), но она возвращает второй (6). Что я делаю не так? Заранее благодарим за любую помощь

+1

6 максимальный. И вы просите об этом. Может быть, «хвост»? –

+1

'levels (var) [max (as.numeric (var))]' возвращает '[1]" 2 "'. Кстати, ваши факторы не упорядочены в смысле R. –

+0

6 - это числовой максимум, но когда я укажу порядок в части «уровней» команды, я бы предположил, что он выплюнул последний уровень (2). –

ответ

3

Просто укажите аргумент ordered в функции factor, а затем он будет работать. См. Ниже:

#set the ordered argument to TRUE, so that R understands the order of the levels 
#and i.e. which one is min and which is max 
var<-factor(c("1","6","4","3","5","2"),levels=c("1","6","4","3","5","2"), ordered=TRUE) 

#and then 
> max(var) 
[1] 2 
Levels: 1 < 6 < 4 < 3 < 5 < 2 
+0

ничего себе это удивительно +1! Знаете ли вы, где 'max' документировано для работы над факторами? Я вижу, что он говорит, что это общие функции, но есть ли «max.factor» или «max.ordered» ... – jenesaisquoi

+0

@bunk Я не могу найти ничего о 'max' в документации, но вы можете найти информация в '? factor'. Факторы по существу являются целыми в фоновом режиме и, по-видимому, если они упорядочены, они получают упорядоченные целые числа, назначенные их уровням. Вот как 'max' понимает, какой элемент фактически является максимальным. – LyzandeR

+0

Я читаю об этом сейчас, если вы посмотрите на '? Summary'. Я даже не знал, что эта группа существовала: D – jenesaisquoi

Смежные вопросы