本文介绍了如何折叠类别或重新分类变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在R中,我有600,000个分类变量,其中每个都被分类为&0&q;、&1&q;或&q;2&q;。
我要做的是折叠第1&q;和第2&q;,并保留第0";本身,以便在重新分类第0;0和第1";1和第2";1和第2";之后。最后,我只希望将&q;0和&q;1作为每个变量的类别。另外,如果可能的话,我宁愿不创建600,000个新变量,如果我可以用新的值替换现有的变量,那就太好了!
执行此操作的最佳方式是什么?
推荐答案
包recode
中有一个函数car
(应用回归随附):
require("car")
recode(x, "c('1','2')='1'; else='0'")
或者对于您的情况,在普通R中:
> x <- factor(sample(c("0","1","2"), 10, replace=TRUE))
> x
[1] 1 1 1 0 1 0 2 0 1 0
Levels: 0 1 2
> factor(pmin(as.numeric(x), 2), labels=c("0","1"))
[1] 1 1 1 0 1 0 1 0 1 0
Levels: 0 1
更新:要重新编码数据框的所有分类列tmp
,可以使用以下
recode_fun <- function(x) factor(pmin(as.numeric(x), 2), labels=c("0","1"))
require("plyr")
catcolwise(recode_fun)(tmp)
这篇关于如何折叠类别或重新分类变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!