R 在特定范围内重新编码变量

R 在特定范围内重新编码变量,r,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

我有一个数据帧示例:

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)

a您的代码中有几个错误。首先,代码末尾有太多的
。接下来,对于要更改的
recode()
函数级别,应该在
''
中。如果将参数
添加为.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))

df[,3:5]如果你打算使用
recode
你需要把猫、狗和兔子放在单引号中:
…,FUN=function(x)recode(x,“'Cat'=0;'Dog'=1;'Rabbit'=2”)
。非常感谢@Didzis Elferts如果我想按名称引用这些列(不是一系列列),我该怎么做?i、 上例中的e.d和f?用df[,3:5]代替df[,c(“d”,“f”)]
df[,3:5]<-sapply(df[ , 3:5] , 
       FUN = function(x) recode(x, "'Cat' =0; 'Dog' =1; 'Rabbit'=2",
                                           as.factor.result=FALSE))