根据数据框子集中的条件在R中添加新列

时间:2018-06-05 06:14:25

标签: r loops dataframe

我有以下数据集:

 df <- data.frame("attribute"=c('name', 'age', 'location'),
                "A"=c(1,0,0), "B"=c(0,1,1), "C"=c(1,0,1))
 names(df) <- c("attribute", "A", "B", "C")
 df

    attribute   A B C
        name    1 0 1
        age     0 1 0
     location   0 1 1
  • 我想在R中添加一个新列,其中包含A,B C中的一个列名。
  • 条件是其中一个属性name, age, location应与A,B C列中的一个匹配。
  • 属性值为1的第一个列名称应列为附加列,如下所示:

      attribute   A B C Column
          name    1 0 1  A
          age     0 1 0  B
       location   0 1 1  B
    

    for(i in df $ attribute){for(j in c(&#34; A&#34;,&#34; B&#34;,&#34; C&#34;)} print(names(姓名( DF) [%(df)%in%c(&#34; A&#34;,&#34; B&#34;,&#34; C&#34;)] [i] == 1)

    < / LI>

我无法解决这个问题。

1 个答案:

答案 0 :(得分:1)

我们可以使用max.col

df$Column <- names(df)[-1][max.col(df[-1], 'first')]
df$Column
#[1] "A" "B" "B"