根据第一列中的值合并两列

时间:2018-02-11 22:35:54

标签: r

我有一个如下数据框:

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

我想按以下方式合并列,

如果第二列有&#34; B / B&#34;收下。如果没有,请从第三列获取值。

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

由于

1 个答案:

答案 0 :(得分:3)

# 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"))