在R中的for循环内重新编码变量

时间:2015-10-01 16:37:23

标签: r loops

我有一个名为perceptionAvailInfo的数据框,它有多个列,如下所示 - >

nameslist<-names(perceptionAvailInfo)
nameslist
##  [1] "email"          "HomeAddress"    "HomePhone"      "Cellphone"     
##  [5] "Employer"       "PoliticalAffln" "WrittenWorks"   "Photo"         
##  [9] "Video"          "Groups"         "Birthdate"      "sex"           
## [13] "age"            "employ"         "sexLabel"       "age_group"

这些列中的每一列(例如:电子邮件)都包含1,2,3,8,9的编码条目,我希望将其重新编码为“是”,“否”等。

我正在尝试使用类似下面的代码来完成这项工作,但我没有看到我需要的结果 - &gt;

for (k in nameslist) {
   if (perceptionAvailInfo[[k]] == 1) perceptionAvailInfo[[k]] <-"Yes"
}

用“是”替换值为1的k的所有值的正确语法是什么?

2 个答案:

答案 0 :(得分:1)

这样做你是错误的

子集
for(k in nameslist)
    {
      perceptionAvailInfo[k][perceptionAvailInfo[k]==1]<-"Yes"
    }

此处不需要if条件

答案 1 :(得分:1)

我们可以使用recode中的library(car)。我们将列(lapply(...)和recode 1值循环为“是”,其余值为“否”。

library(car)
perceptionAvailInfo[] <- lapply(perceptionAvailInfo, recode, "1='Yes';else='No'")