我有一个如下数据框:
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列和合并的第二和第三列(作为单个列)。
由于
答案 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"))