Дано неупорядоченное идентификатор фактора, опорный вектор для ранга каждого уровня и метка для каждого уровня. Теперь я хочу заказать идентификаторы по заданному рангу, после чего я хочу переопределить метки в коэффициенте.Освобождение фактора
Не могли бы вы дать советовать, если есть лучший способ сделать это:
ID<-factor(c(1,2,2,3,1,3,3,2,1,1)+10)
Rank<-c("11"=3,"12"=1,"13"=2)
Label<-c("11"="B","12"="A","13"="C")
ID.Rank<-factor(ID, levels=names(Rank),labels=Rank)
ID.Rank<-factor(ID.Rank, levels=sort(Rank),order=T)
ID.Label<-factor(ID, levels=names(Label),labels=Label)
data.frame(ID,ID.Rank,ID.Label)
### here is importent that ID.Rank has a certain order.
factor(ID.Rank, labels=Label[match(levels(ID.Rank), Rank)])
Я смущен тремя схемами маркировки. У вас есть ID, Rank и Label, но поскольку идентификатор и ранг являются числовыми, я не знаю, соответствуют ли номера, соответствующие меткам идентификаторам или рангу. Чтобы быть яснее, я предложил бы сделать идентификаторы 11:13, а также показать желаемый результат. – Aaron
@ Аарон ID <-фактор (образец (11: 13,10, T)); ID; idlvl <-levels (ID); Ранг <-c ("11" = 3, "12" = 1, "13" = 2); idrank <-Rank [as.character (idlvl)]; ID <-фактор (идентификатор, метки = idrank); ID <-фактор (идентификатор, уровни = 1: длина (idrank), порядок = T); ID; Этикетка <-c ("11" = "B", "12" = "A", "13" = "C"); idlabel <-Label [as.character (idlvl)]; factor (ID, levels = idrank, labels = idlabel); – Klaus
Это дает другой результат, чем первый код. Что правильно? – Aaron