将虚拟变量重新编码为有序因子

标签 r regression r-factor

我需要一些有关逻辑回归编码因素的帮助。

我有六个代表收入等级的虚拟变量。我想将它们转换成单个有序因子以用于逻辑回归。

我的数据框看起来像:

    INC1 INC2 INC3 INC4 INC5 INC6
1      0    0    1    0    0    0  
2     NA   NA   NA   NA   NA   NA  
3      0    0    0    0    0    1  
4      0    0    0    0    0    1  
5      0    0    1    0    0    0  
6      0    0    0    1    0    0  
7      0    0    1    0    0    0  
8      0    0    0    1    0    0

我希望它看起来像什么:

    INC
1   INC3  
2   NA   
3   INC6  
4   INC6  
5   INC3 
6   INC4  
7   INC3  
8   INC4   

这一定是一个常见(且简单)的操作,但我的搜索没有找到关于如何执行此重新编码的简明答案。很感谢任何形式的帮助。

最佳答案

这是一个基于另一个答案的解决方案,它保留 NA 值并转换为有序因子。

> inc
  INC1 INC2 INC3 INC4 INC5 INC6
1    0    0    1    0    0    0
2   NA   NA   NA   NA   NA   NA
3    0    0    0    0    0    1
4    0    0    0    0    0    1
5    0    0    1    0    0    0
6    0    0    0    1    0    0
7    0    0    1    0    0    0
8    0    0    0    1    0    0
> inc$F = factor(apply(inc, 1, function(x) names(x)[x == 1]),levels=names(inc),ordered=TRUE)

> inc
  INC1 INC2 INC3 INC4 INC5 INC6    F
1    0    0    1    0    0    0 INC3
2   NA   NA   NA   NA   NA   NA <NA>
3    0    0    0    0    0    1 INC6
4    0    0    0    0    0    1 INC6
5    0    0    1    0    0    0 INC3
6    0    0    0    1    0    0 INC4
7    0    0    1    0    0    0 INC3
8    0    0    0    1    0    0 INC4
> inc$F
[1] INC3 <NA> INC6 INC6 INC3 INC4 INC3 INC4
Levels: INC1 < INC2 < INC3 < INC4 < INC5 < INC6

如果连续有多个 1,这将中断。

关于将虚拟变量重新编码为有序因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161202/

相关文章:

r - 将粘贴的数字转换为 r 中的数字向量

python - 值错误 : feature_names mismatch: in xgboost in the predict() function

在 R 中运行嵌套逻辑回归

r - 按因子对数据框列进行排序

R 计算公式列表中的公式

r - 如何使用 ggplot/ggmap 在 SpatialLinesDataFrame 中绘制街道并为其着色?

r - 访问第二级列表

R:为什么我在将列转换为因子后没有得到类型或类 "factor"?

r - 如何使用该子集提取前 n 行并计算每组的函数,然后计算不同组的平均值?

python - 多变量高斯过程回归: adaptation of kernels