使用R语言将布尔列合并为1列

我有一个如下所示的数据集:

  X0.501_0.499.1 X0.400_0.600 X0.400_0.600.1 X1.Octanol X1.Propanol X2.Butanol X2.propanol X1.isobutanol1         -39.91       -63.62         -53.14          1           0          0           0             02         -48.68       -73.45         -63.17          1           0          0           0             03         -57.89       -84.45         -73.99          1           0          0           0             04         -65.99       -92.61         -83.37          1           0          0           0             05         -72.62      -101.14         -91.33          1           0          0           0             06        -167.42      -263.80        -218.03          0           1          0           0             0

我想将最后5列合并为1列,结果应如下所示:

  X0.501_0.499.1 X0.400_0.600 X0.400_0.600.1  Type 1         -39.91       -63.62         -53.14  X1.Octanol          2         -48.68       -73.45         -63.17  X1.Octanol           3         -57.89       -84.45         -73.99  X1.Octanol           4         -65.99       -92.61         -83.37  X1.Octanol           5         -72.62      -101.14         -91.33  X1.Octanol           6        -167.42      -263.80        -218.03  X1.Propanol          

有谁能提供解决方案吗?


回答:

我们可以使用max.col直接获取每行的列索引,并用数据集的列名替换它

Type <- names(df1)[4:ncol(df1)][max.col(df1[4:ncol(df1)], 'first')]df2 <- cbind(df1[1:3], Type = Type)df2#  X0.501_0.499.1 X0.400_0.600 X0.400_0.600.1        Type#1         -39.91       -63.62         -53.14  X1.Octanol#2         -48.68       -73.45         -63.17  X1.Octanol#3         -57.89       -84.45         -73.99  X1.Octanol#4         -65.99       -92.61         -83.37  X1.Octanol#5         -72.62      -101.14         -91.33  X1.Octanol#6        -167.42      -263.80        -218.03 X1.Propanol

数据

df1 <- structure(list(X0.501_0.499.1 = c(-39.91, -48.68, -57.89, -65.99, -72.62, -167.42), X0.400_0.600 = c(-63.62, -73.45, -84.45, -92.61, -101.14, -263.8), X0.400_0.600.1 = c(-53.14, -63.17, -73.99, -83.37, -91.33, -218.03), X1.Octanol = c(1L, 1L, 1L, 1L, 1L, 0L), X1.Propanol = c(0L, 0L, 0L, 0L, 0L, 1L), X2.Butanol = c(0L, 0L, 0L, 0L, 0L, 0L), X2.propanol = c(0L, 0L, 0L, 0L, 0L, 0L),     X1.isobutanol = c(0L, 0L, 0L, 0L, 0L, 0L)),    class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6"))

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注