我有一个由数百个因素组成的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 ...
我做错了什么?不能那么难!