真正的R程序员如何使用冗余步骤编写代码块?在这里,我复制/粘贴/编辑每一行,这对于这个小分析工作正常,但对于较大的分析,它会变得笨拙。在SAS中,我写了宏。寻找R。
中的生成原则此示例具有一些典型模式,例如重新编码一组连续的列和/或具有编号模式。此外,重新编码逻辑只是"将NA替换为0,然后添加1"作为另一种期望输入变量正整数的算法的输入,这里使用car
库。
data$rs14_1 <- recode(data$q14_1,"5=6;4=5;3=4;2=3;1=2;0=1;NA=0")
data$rs14_2 <- recode(data$q14_2,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_3 <- recode(data$q14_3,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_4 <- recode(data$q14_4,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_5 <- recode(data$q14_5,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_6 <- recode(data$q14_6,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_7 <- recode(data$q14_7,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_8 <- recode(data$q14_8,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
data$rs14_9 <- recode(data$q14_9,"5=6;4=5;3=4;2=3;1=2;0=1;NA=1")
答案 0 :(得分:3)
假设第一行中的重新编码应该与其余部分相同:
重新编码所有数据列,创建一个新数据框作为结果:
newdata <- lapply(data,recode,"5=6;4=5;3=4;2=3;1=2;0=1;NA=0")
根据旧数据框设置新数据框的名称:
names(newdata) <- gsub("^q","rs",names(newdata))
把它们放在一起:
data <- cbind(data,newdata)
但实际上,您可能应该使用:
newdata <- data
newdata[is.na(newdata)] <- 0
newdata <- newdata+1
(而不是recode
)进行转换,然后重命名和cbind
步骤。
(如果你给出了一个可重复的例子,那会很有帮助。)