2012-02-23 6 views
1

У меня есть следующий кадр данных, который создается ниже:Автоматическая Фиктивные переменные в R

temp <- as.data.frame(with(uadm, table(prlo_state_code))) 

Я ищу, чтобы создать 11 фиктивных переменных. Один для каждого из 10 лучших и «другой». 10 топ можно легко найти с:

#top10 
temp <- temp[order(temp$Freq, decreasing=T),] 
head(temp, n=10) 

Я знаю R велик, поэтому я предполагаю, что есть простой для автоматического создания (и имя) фиктивные переменные из топ-10 и свернуть все остальное в последний манекен, называемый «другим».

Заранее благодарим за помощь или понимание.

ответ

6

Вам редко нужны фиктивные переменные - R автоматически создает их для вас.

Если вы просто хотите поместить все классы, которые не входят в первую десятку, , вы можете просто использовать ifelse и %in%.

x <- sample(LETTERS, 1e4, replace=TRUE, p=runif(26)) 
top10 <- names(sort(table(x), decreasing=TRUE)[1:10]) 
y <- ifelse(x %in% top10, as.character(x), "Rest") 
table(y) 

Если вы абсолютно необходимо фиктивные переменные, вы можете создать их с model.matrix. функции регрессии

model.matrix(~y) 
3

АиРа будут составлять необходимые столбцы в model.matrix, когда переменная фактор классифицироваться вводятся в формуле .. Это все автоматически. Контраст по умолчанию находится между первым уровнем фактора и каждым из других уровней, так называемыми «схемами лечения». Возможны другие варианты.