【发布时间】:2016-05-09 19:30:00
【问题描述】:
我找不到这个特定问题的答案。我想将多个字符列重新编码为数字列。 (是一百列)但是:
- 列的顺序并不总是相同(我重新编码 每月更新的数据)。
- 列由我不想重新编码的列分隔。
- 数据集并不总是包含相同的列。
所以,我认为我不能使用一系列列索引。但是,我希望重新编码的列以相同的列名前缀开头。我想将任何“是”重新编码为 1,将“否”重新编码为 0,并将空白重新编码为 NA。
我可以使用以下代码一次手动完成一列:
#Recode columns one at a time
library(car)
#skip ID column
#Skip Date column
df$Q1<-as.numeric(as.character(recode(df$Q1,"NA=NA; 'No'=0; 'Yes'=1; ''=NA")))
df$Q2<-as.numeric(as.character(recode(df$Q2,"NA=NA; 'No'=0; 'Yes'=1; ''=NA")))
#skip Q2.Explanation column
#do the above for a hundred more columns...
但我想同时重新编码一百个特定的列。这些列也由我不想重新编码的列分隔。
我的数据如下。不确定 dput 是什么:
ID<-c(01,02,03,04,05)
Q1<-c("Yes", NA,"", "No",NA)
Q1.Explanation<-c (NA, NA,"","Respondent did not get the correct answer", NA)
Q2<-c("No","Yes","Yes","", NA)
Q2.Explanation <-c("The right answer was not proven", NA, NA, NA, NA)
Q3<-c("", NA, "Yes", NA, NA)
Mydata<-as.data.frame(cbind(ID,Q1,Q1.Explanation, Q2, Q2.Explanation,Q3))
【问题讨论】:
-
您可以使用
grepl()函数结合prefix找出您要重新编码的列,然后循环遍历这些列进行重新编码。如果您想要更具体的答案,请通过粘贴数据的dput来提供您的 data.frame 示例。 -
对于您要重新编码的所有列,重新编码逻辑是否始终相同(换句话说:翻译是否始终使用相同的映射逻辑)?
-
是的,重新编码的逻辑总是一样的。
标签: r multiple-columns flags recode