R更改data.frame的所有变量的因子

时间:2015-11-12 13:04:29

标签: r lapply r-factor

我有一个由数百个因素组成的data.frame。这些因素有两个奇怪的水平:""和"真"。

我必须简单地将等级转换为" 0"和" 1"。

问题是,我无法做到。我尝试了stackoverflow上存在的几个解决方案,例如here但我无法做到。

数据为here

如果我只是改变各个变量的因子水平(当然)

export <- read.csv("factordata.csv")
str(export)
'data.frame':   16 obs. of  124 variables:
$ caddy1_prod_detail_2456            : Factor w/ 2 levels "","true": 2 1 1 1 1 1 1 1 1 1 ...

str(export$caddy1_prod_detail_2456)
#Factor w/ 2 levels "","true": 2 1 1 1 1 1 1 1 1 1 ...
levels(export$caddy1_prod_detail_2456)<-c(0,1)
str(export$caddy1_prod_detail_2456)
#Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ...

但是如果我尝试使用for循环,就像这里

for (var in export ) {
  levels(var)<-c("0","1")
}

数据没有任何反应;如果相反,我尝试在另一个问题中提出的解决方案,如在这里

export[] <- lapply(export, function(x){
 levels(x) <- c(0,1)
 })

它以数字形式转换我的因子并销毁现有数据,将变量转换为0和1的列表。

str(export)
'data.frame':   16 obs. of  124 variables:
 $ caddy1_prod_detail_2456            : num  0 1 0 1 0 1 0 1 0 1 ...
 $ caddy1_prod_detail_2456_ingredients: num  0 1 0 1 0 1 0 1 0 1 ...

我做错了什么?不能那么难!

0 个答案:

没有答案