2016-08-13 3 views
2

У меня есть колонка факторов с аббревиатурами футбольной позиции, около 17 уникальных значений с 220 наблюдениями. Я хочу иметь только три уровня факторов, которые охватывают 17 уникальных значений.Как группировать уровни факторов в R

levels(nfldraft$Pos) <- list(Linemen = c("C","OG","OT","TE","DT","DE"), Small_Backs = c("CB","WR","FS"), Big_Backs = c("FB","ILB","OLB","P","QB","RB","SS","WR")) 

является то, что я пытался, печать nfldraft$Pos на консоль показывает 3 уровня фактора, но все значения являются либо электромонтажников или Small_Backs и все остальные являются NA. Где я иду не так? Спасибо

+0

Просьба показать воспроизводимый пример и ожидаемый результат – akrun

+3

Уровни факторов могут быть только вектором одного уровня, а не списком. – alistaire

+0

WR находится в двух категориях. –

ответ

2

я сделал вектор пример символа со всеми сокращениями:

my_example <- c("C","OG","OT","TE","DT","DE","CB","WR","FS", 
       "FB","ILB","OLB","P","QB","RB","SS","WR") 
class(my_example) 

[1] «характер»

Тогда я заменил желаемые уровни для их сокращения (вы также можете использовать gsub здесь или любое из множества, много разных подходов):

my_example[my_example %in% c("C","OG","OT","TE","DT","DE")] <- "Linemen" 
my_example[my_example %in% c("CB","WR","FS")]    <- "Small Backs" 
my_example[my_example %in% c("FB","ILB","OLB","P", 
          "QB","RB","SS","WR")]   <- "Big Backs" 

Тогда я сделал это в фактор:

my_example <- as.factor(my_example) 
head(my_example) 
[1] Linemen Linemen Linemen Linemen Linemen Linemen 
Levels: Big Backs Linemen Small Backs 
tail(my_example) 
[1] Big Backs Big Backs Big Backs Big Backs Big Backs Small Backs 
Levels: Big Backs Linemen Small Backs 
class(my_example) 

[1] "фактор"

+1

Некоторое объяснение того, что вы делаете со всем этим кодом, было бы хороший. Ясно, что ОП не понимает факторов. –

+0

Возможно, было бы безопаснее назначать другое имя, поскольку элемент большой суммы может быть фактором в кадре данных. –

+0

Я сделал это: '> nfldraft $ Pos [nfldraft $ Pos% in% c (" C "," OG "," OT "," TE "," DT "," DE ")] <-" Linemen " Предупреждение: В '[<-. Factor' (' * tmp * ', nfldraft $ Pos% in% c (" C "," OG "," OT "," TE ",: Недопустимый коэффициент, NA –

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