Уровни факторов в R
У меня есть этот вектор:
traits <- c("resid.mean.EXT" , "resid.q75.EXT" , "resid.median.red" , "resid.q75.red" , "resid.median.yellow" ,
"resid.q75.yellow" , "resid.mean.norm.EXT" , "resid.q75.norm.EXT" , "resid.mean.norm.yellow" ,"resid.median.norm.yellow",
"resid.q75.norm.yellow" , "resid.iqr.EXT" , "resid.iqr.red" , "resid.iqr.yellow" , "resid.q90.EXT" ,
"resid.q90.norm.red" , "resid.q90.norm.yellow" , "resid.var.EXT" , "resid.q25.TOF" , "resid.q25.norm.yellow" )
В чертах вектора есть 20 уникальных строк, однако есть 4 уникальных класса черт:
classes <- c("EXT", "red", "TOF", "yellow")
Классы определяются последним словом для каждого элемента в traits
вектор.
Я хотел бы сделать символьный вектор traits
в факторы с 4 уровнями в зависимости от того, в каком классе они находятся.
Спасибо за помощь!
РЕДАКТИРОВАТЬ Там, кажется, была некоторая путаница. Чтобы уточнить, я хотел бы сделать traits
в фактор-вектор с 4 уровнями, соответствующий классу, который принадлежит, который определяется, как описано выше. Спасибо
1 ответ
Вы можете использовать регулярные выражения и sub
функция, например:
## this will replace the whole string in traits with the content after the last dot
cl <- sub(".*\\.([A-Za-z]+)$", "\\1", x=traits)
factor(cl)
# [1] EXT EXT red red yellow yellow EXT EXT yellow yellow yellow EXT red yellow EXT red yellow EXT TOF yellow
# Levels: EXT red TOF yellow