2015-03-10 2 views
1

Я анализирую набор данных CHFLS в R, который находится в библиотеке HSAUR2. Я хочу подгонять линейную модель к этим данным, чтобы выяснить влияние других переменных на переменную R_happy; R_happy был закодирован таким образом, что 1 обозначается для «Very happy» и 0 в противном случае. Мне просто интересно, как я кодирую остальные переменные, например, R_region как числовые, поэтому я могу использовать фиктивные переменные и соответствовать линейной модели? Я попытался использовать as.numeric, но он не сработал. Мой код выглядит следующим образом:Как закодировать категориальные переменные как числовые в R

нагрузки, необходимая библиотеку

library("HSAUR2") #Load necessary library 
data(CHFLS,package="HSAUR2") #Load the Chinese Health and Family Life Survey data 

View(CHFLS) #Read details about the data, including the covariates. 
help("CHFLS") 

summary(CHFLS) #Produce a summary of the data 

#Pie chart showing womens self reported happiness 
slices <- c(280, 1254) 
lbls <- c("Very happy (18.25%)", "Otherwise(81.75%)") 
pie(slices, labels=lbls) 

#Define the variable of interest to be y which is 1 when 
#"Very happy" (or greater) and 0 otherwise 
y<-(CHFLS$R_happy>="Very happy") 

# Append y onto the data and call the new data CHFLSnew 
CHFLSnew<-cbind(CHFLS,y) 

# Ensure that any categorical variables are coded as factors. 
CHFLSnew$y<-as.factor(CHFLSnew$y) 

##Append y as factor onto CHFLSnew 
CHFLSnew<-cbind(CHFLS,y) 
+2

Если переменная концептуально категоричен, оставить его в качестве фактора , R будет обрабатывать все для вас за кулисами. –

+0

Сохраните нам некоторые проблемы: какой класс 'R_region'? И что происходит, когда вы пытаетесь «as.numeric»? Например, если это «фактор», вам нужно использовать 'as.numeric (as.character())' –

+0

@CarlWitthoft: as.numeric работает с факторами даже без преобразования as.character. Выход идентичен. – rnso

ответ

0

В общем, если вы хотите, чтобы преобразовать factor в numeric:

f <- factor(1:10) 
f 
[1] 1 2 3 4 5 6 7 8 9 10 
Levels: 1 2 3 4 5 6 7 8 9 10 

n <- as.numeric(levels(f)[f]) 
n 
[1] 1 2 3 4 5 6 7 8 9 10 
Смежные вопросы