使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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