2013-08-20 5 views
1

У меня есть пример dataframe:Recode переменные в пределах определенного диапазона

a <- c(1:5) 
b <- c("Cat", "Dog", "Rabbit", "Cat", "Dog") 
c <- c("Dog", "Rabbit", "Cat", "Dog", "Dog") 
d <- c("Rabbit", "Cat", "Dog", "Dog", "Rabbit") 
e <- c("Cat", "Dog", "Dog", "Rabbit", "Cat") 
f <- c("Cat", "Dog", "Dog", "Rabbit", "Cat") 

df <- data.frame(a,b,c,d,e,f) 

Я хочу перекодировать определенные переменные в пределах этого dataframe (например, колонны С, D и Е).

До сих пор у меня есть:

library(car) # Contains recode function 
survey[, 3:5] <- lapply(survey[ , 3:5] , 
          FUN = function(x) recode(x, "Cat =0; Dog =1; Rabbit"=2))) 

Но это выдает сообщение об ошибке. Может ли кто-нибудь предложить, как должна читаться функция?

Кроме того, если раньше я добавлял дополнительные столбцы, можно ли использовать ряд столбцов с использованием первого и последнего?

т.е. ДФ $ с: ДФ $ е

Любая помощь будет с благодарностью принят.

+0

Если вы установите на использование '' recode'' вам нужно поставить кошку, собаку и кролика в одинарные кавычки: '' '..., FUN = функция (х) перекодировать (х,«» Cat '= 0;' Dog '= 1;' Rabbit '= 2 ")' ''. – orizon

ответ

2

В коде есть пара ошибок. Во-первых, там, где слишком много ) в конце кода. Далее, для recode() функциональные уровни, которые вы меняете, должны быть в ''. Если вы добавите аргумент as.factor.result=FALSE, результат будет численным.

df[,3:5]<-sapply(df[ , 3:5] , 
     FUN = function(x) recode(x, "'Cat' =0; 'Dog' =1; 'Rabbit'=2", 
              as.factor.result=FALSE)) 
+0

Большое спасибо @Didzis Elferts Если бы я хотел ссылаться на столбцы по имени (а не на ряд столбцов), как мне это сделать? т.е. d и f в приведенном выше примере? –

+0

Вместо df [, 3: 5] записать df [, c ("d", "f")] –

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