从 R 中的虚拟对象重建分类变量

标签 r dummy-variable reformatting

这个问题在这里已经有了答案:





Using dplyr to gather dummy variables

(2 个回答)



Convert various dummy/logical variables into a single categorical variable/factor from their name in R

(3 个回答)


16 天前关闭。




嘿嘿,
我是 R 的初学者,遇到了一个到目前为止我找不到解决方案的问题。我想将虚拟变量转换回分类变量。

|dummy1| dummy2|dummy3|
|------| ------|------|
| 0    | 1     |0     |
| 1    | 0     |0     |
| 0    | 1     |0     |
| 0    | 0     |1     |

进入:
|dummy |
|------|
|dummy2|
|dummy1|
|dummy2|
|dummy3|

你知道如何在 R 中做到这一点吗?提前致谢。

最佳答案

你可以用 data.table 做到这一点

id_cols = c("x1", "x2") 
data.table::melt.data.table(data = dt, id.vars = id_cols, 
                            na.rm = TRUE, 
                            measure = patterns("dummy"))

例子:
t = data.table(dummy_a = c(1, 0, 0), dummy_b = c(0, 1, 0), dummy_c = c(0, 0, 1), id = c(1, 2, 3))
data.table::melt.data.table(data = t, 
                            id.vars = "id", 
                            measure = patterns("dummy_"), 
                            na.rm = T)[value == 1, .(id, variable)]

输出
   id variable
1:  1  dummy_a
2:  2  dummy_b
3:  3  dummy_c

如果你用 NA 重新设置 0 会更容易,所以 na.rm = TRUE inmelt 会用 NA 丢弃每一行

关于从 R 中的虚拟对象重建分类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49130366/

相关文章:

r - 以分组观察中的重复为条件的虚拟变量

java - 如何说服管理层重新格式化整个 Java 代码库是安全的

python - 重新格式化 JSON 文件?

r - 在 knitr 中打印数据帧时隐藏 NA

python Pandas : create a new column for each different value of a source column (with boolean output as column values)

r - 求解未知的积分上限

python - Large Pandas Dataframe 中一小部分值的频率

r - 计算时间序列矩阵的近似熵

python - 如何以适合在 R 中分析的格式重新排列 pandas 中的表格?