【问题标题】:Convert id indicator columns to one ID column将 id 指示符列转换为一个 ID 列
【发布时间】:2018-04-18 16:10:09
【问题描述】:

我想将多个二进制 id 指示符列转换为一个 id 列。

我的意见:

       var1   var2  id1   id2  id3
obs1    .       .    0     1    0
obs2    .       .    1     0    0
obs3    .       .    0     0    1

我想要的输出:

       var1   var2  id1   id2  id3  id
obs1    .       .    0     1    0    2
obs2    .       .    1     0    0    1
obs3    .       .    0     0    1    3

【问题讨论】:

  • 喜欢这个? id <- ifelse(id1 == 1, 1, ifelse(id2 == 1, 2, 3)) 或者你如何从 id-columns 到 id?

标签: r dataframe data-manipulation


【解决方案1】:
> df$id <- which(df[,-c(1,2)]==1, arr.ind = TRUE)[, 1]
> df
     var1 var2 id1 id2 id3 id
obs1    .    .   0   1   0  2
obs2    .    .   1   0   0  1
obs3    .    .   0   0   1  3

【讨论】:

    【解决方案2】:

    我们可以使用max.col

    df1$id <- max.col(df1[grep("id", names(df1))])
    df1
    #     var1 var2 id1 id2 id3 id
    #obs1    .    .   0   1   0  2
    #obs2    .    .   1   0   0  1
    #obs3    .    .   0   0   1  3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      相关资源
      最近更新 更多