2015-06-29 6 views
0

У меня есть кадр данных и вам необходимо сгруппировать наблюдения на основе значения одной переменной (вектора) в равное количество групп. Ниже проиллюстрировать, я использовал функцию сокращения, чтобы создать коэффициент, основанный на значении вектора А. Он создает три уровня, и каждое значение вектора A попадает в один из уровней/группы. Теперь, как я могу извлечь/ссылаться на векторное значение A на основе уровня разреза X. Например, если я хочу выбрать наблюдения A, перейдите на уровень 1: [1.2.33], как это сделать?Как подмножить наблюдения на основе уровня фактора

> A<-1:5 
> X<-cut(A,breaks=quantile(A,probs=c(0:3)/3),labels=1:3,include.lowest=TRUE) 
> A 
[1] 1 2 3 4 5 
> X 
[1] [1,2.33] [1,2.33] (2.33,3.67] (3.67,5] (3.67,5] 
Levels: [1,2.33] (2.33,3.67] (3.67,5] 
+1

Ваш код имеет по крайней мере 2 несогласованности , 1. Вы определяете 'A', а затем используете' a'. 2. У вас есть опечатка на 'lables', которая приводит к этим уровням, подобным диапазону. – Molx

ответ

0

Вот лучший пример, чем то, что вы предоставили:

> v <-1:10 
> X <- cut(v, breaks=quantile(v,probs=c(0:3)/3), labels=letters[1:3], include.lowest=TRUE) 
> X 
[1] a a a a b b b c c c 
Levels: a b c 

Два выбора значений из v, которые соответствуют уровню "a", просто запустите:

> v[X=="a"] 
[1] 1 2 3 4 
+0

Что делать, если я хочу создать много групп, таких как процентили. И я хочу сгруппировать наблюдение на основе номера группы процентилей. Вместо подмножества указывается диапазон каждой группы. Есть ли способ автоматически присваивать проценты или индекс группы процентилей каждому наблюдению? (Подобно Proc Rank в SAS) –

+0

Теперь я получил часть ярлыка. Я попробую спасибо Мольксу! –

+0

Вместо метки как a, b, c, как я могу обозначить их как 1,2,3 для ранжирования порядка группы? –

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