我找不到这个特定问题的答案。我想将多个字符列重新编码为数字列。(这是一百列)但是:
- 列的顺序并不总是相同(我每个月都会重新编码刷新的数据)。
- 列由我不想重新编码的列分隔。
- 数据集并不总是包含相同的列。
所以,我认为我不能使用一系列列索引。但是,我希望重新编码的列以相同的列名前缀开头。我想将任何“是”重新编码为 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))