R , 拨浪鼓 , 重新编码

R , rattle , recode

R , 拨浪鼓

这是我的数据:

KK<- c('yes','no','yes','yes','dp')
LL<- c('dp','no','yes','yes','no')
II<- c('yes','dp','no','no','no')
JJ<- c('yes','no','yes','yes','dp')
AA<- c('no','dp','yes','yes','yes')
MYDATA <- data.frame(KK,LL,II,JJ,AA);MYDATA

目标:

将「no」重新编码为「0.0」

将「是」重新编码为「1.0」

重新编码「dp」为「0.5」

问题: 我如何使用包“rattle”在 r 中重新编码

假设您正在寻找一个数字结果:

(MYDATA == "dp") / 2 + (MYDATA == "yes")

给予:

      KK  LL  II  JJ  AA
[1,] 1.0 0.5 1.0 1.0 0.0
[2,] 0.0 0.0 0.5 0.0 0.5
[3,] 1.0 1.0 0.0 1.0 1.0
[4,] 1.0 1.0 0.0 1.0 1.0
[5,] 0.5 0.0 0.0 0.5 1.0

我们可以将 'MYDATA' 转换为 'matrix',将 'character' class 更改为 'factor',方法是将标签指定为 '0.5, 0, 1 ' 根据级别的顺序并将其分配回 'MYDATA'。 [] 将确保结构保持不变。

MYDATA[] <- as.numeric(as.character(factor(as.matrix(MYDATA), 
                            labels=c(0.5, 0, 1))))

MYDATA 
#   KK  LL  II  JJ  AA
#1 1.0 0.5 1.0 1.0 0.0
#2 0.0 0.0 0.5 0.0 0.5
#3 1.0 1.0 0.0 1.0 1.0
#4 1.0 1.0 0.0 1.0 1.0
#5 0.5 0.0 0.0 0.5 1.0