r - 将R中的多个二进制列合并为一列并保留位置

标签 r dataframe merge multiple-columns

我有一个数据框,其中包含 R 中的 30 列,其中包含二进制数据。每行恰好包含一个 1。换句话说,二进制值是互斥的。对于所有 30 列,同一行中没有两列可以包含 1。这是我的意思的一个例子。

1  0  0
0  1  0 
0  0  1
1  0  0
0  0  1

现在显然,将这​​些信息分布在三十列上的计算成本非常高。我想要做的是将所有这 30 列合并到包含 30 个不同因子变量的一列中。例如,新列每行包含 2 个,其中第二列有 1 个,每行包含 3 个,第三列有 1 个,等等。重要的是要保留原始顺序,并且位置在运行时不会困惑作为其他列的索引。所以上面的 3 列将变成这样:

1
2
3
1
3

如何在 R 中实现这一目标?

非常感谢

最佳答案

我们可以使用max.col来查找数据集第一个值的索引

max.col(df1)
#[1] 1 2 3 1 3

或者使用pmax

do.call(pmax, col(df1)*df1)
#[1] 1 2 3 1 3

数据

df1  <- structure(list(v1 = c(1L, 0L, 0L, 1L, 0L), v2 = c(0L, 1L, 0L, 
0L, 0L), v3 = c(0L, 0L, 1L, 0L, 1L)), .Names = c("v1", "v2", 
"v3"), class = "data.frame", row.names = c(NA, -5L))

关于r - 将R中的多个二进制列合并为一列并保留位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43206649/

相关文章:

pandas - 将数据帧的列中的某些条目替换为另一个数据帧的列

css - 合并 2 个大型 CSS 文件的有效方法

android - 同时播放两种声音-Android

r - 如何将阿拉伯数字翻译成孟加拉语

R代码将shiny.tag.list保存到html,就像查看器->导出->另存为网页按钮一样

R ggplot 循环内带有变量

从另一个数据框R中存在的一个数据框删除数据

python - 未从 pandas value_counts() 获取 0 索引

python - 如何对具有混合数据类型的 pandas 数据框中的浮点(十进制)值进行舍入?

r - 仅当使用 data.table 的 := 连接两个表时才需要第一个实例