重新编码特定范围内的变量

时间:2013-08-20 09:38:24

标签: r

我有一个示例数据框:

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)

我想在此数据框中重新编码某些变量(例如列c,d和e)。

到目前为止,我有:

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

但这会给出错误信息。任何人都可以建议该函数应该如何阅读?

另外,如果我之前添加了额外的列,是否可以使用第一个和最后一个列来进行一系列的列?

即。 DF $ C:DF $ë

感谢任何帮助。

1 个答案:

答案 0 :(得分: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))