我们可以使用gsub
删除那些特殊字符,然后执行recode
with(data3, recode(gsub("[/:]", "", Edu),
"'Incomplete secondary school technical vocational type' = 4"))
或者我们可以使用base R
诸如分配levels
到新级别的方法
levels(data3$Edu)[levels(data3$Edu)=="Incomplete secondary school: technical/ vocational type"] <- 4
data3
# Edu
#1 4
#2 Something else
#3 Some other thing
#4 4
更新
由于 OP 想要将多个值重新编码为其他值,我们可以使用match
. 在这里,我将第一个和第三个更改level
为新值。
levels(data3$Edu)[match(levels(data3$Edu)[c(1,3)], levels(data3$Edu) ) ] <- c(4, 1)
data3
# Edu
#1 4
#2 1
#3 Some other thing
#4 4
如果 OP 想要将所有级别更改为某些数值,我们可以factor
直接将级别强制为数字
as.integer(data3$Edu)
#[1] 1 3 2 1
可以通过设置不同的值来更改值,levels
即
as.integer(factor(data3$Edu, levels = levels(data3$Edu)[c(1,3,2)]))
#[1] 1 2 3 1
数据
data3 <- data.frame(Edu = c('Incomplete secondary school: technical/ vocational type',
'Something else',
'Some other thing',
'Incomplete secondary school: technical/ vocational type'
))