【问题标题】:Merge two columns based on values present in first one根据第一列中存在的值合并两列
【发布时间】:2018-02-11 22:35:53
【问题描述】:

我有一个如下数据框:

df <- data.frame(ID = c("X", "Y", "Z"), c("A/A", "B/B", "A/A"), c("D/D", "H/H", "B/B"))

我想按以下方式合并列,

如果第二列有“B/B”,请保留它。如果不是,则取第三列的值。

如何做到这一点?我希望最终输出只是数据框中的 ID 列和合并的第二列和第三列(作为单列)。

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:
    # name the columns
    names(df)[-1] <- letters[2:ncol(df)]
    
    # create "merged" column with dplyr
    require(dplyr)
    df %>% mutate(newcol = replace(c, b == "B/B", "B/B")) %>% select(ID, newcol)
    
    #create "merged" column with data.table
    require(data.table)
    setDT(df)
    df[, .(ID, newcol = replace(c, b == "B/B", "B/B"))]
    

    感谢 thelatemail 指出我不知何故错过的明显解决方案,它不需要包

    cbind(df["ID"], newcol=replace(df$c, df$b == "B/B", "B/B"))

    【讨论】:

    • 或者没有任何包 - cbind(df["ID"], newcol=replace(df$c, df$b == "B/B", "B/B"))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2018-11-28
    • 2019-06-20
    • 2019-12-29
    • 2011-05-03
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多