R 将字符列合并到新列中
如果您能在以下方面帮助我,我将非常感激,因为经过几次测试,我仍然无法得到正确的结果 我得到了以下数据:R 将字符列合并到新列中,r,merge,dataframe,concatenation,R,Merge,Dataframe,Concatenation,如果您能在以下方面帮助我,我将非常感激,因为经过几次测试,我仍然无法得到正确的结果 我得到了以下数据: dd_1 <- data.frame(ID = c("1","2", "3", "4", "5"), Class_a = c("a",NA, "a", NA, NA), Class_b = c(NA, "b", "b", "b", "b")) dd_1这里是: tmp <- paste(dd_1$Class_a,
dd_1 <- data.frame(ID = c("1","2", "3", "4", "5"),
Class_a = c("a",NA, "a", NA, NA),
Class_b = c(NA, "b", "b", "b", "b"))
dd_1这里是:
tmp <- paste(dd_1$Class_a, dd_1$Class_b, sep='-')
tmp <- gsub('NA-|-NA', '', tmp)
(dd_2 <- cbind(dd_1, tmp))
另一种选择:
dd_1$CLASS <- with(dd_1, ifelse(is.na(Class_a), as.character(Class_b),
ifelse(is.na(Class_b), as.character(Class_a),
paste(Class_a, Class_b, sep="-"))))
dd_1$CLASS这里有一个使用apply
的简短解决方案:
dd_2 <- cbind(dd_1, CLASS = apply(dd_1[2:3], 1,
function(x) paste(na.omit(x), collapse = "-")))
dd_2
dd_1$CLASS <- with(dd_1, ifelse(is.na(Class_a), as.character(Class_b),
ifelse(is.na(Class_b), as.character(Class_a),
paste(Class_a, Class_b, sep="-"))))
dd_2 <- cbind(dd_1, CLASS = apply(dd_1[2:3], 1,
function(x) paste(na.omit(x), collapse = "-")))
ID Class_a Class_b CLASS
1 1 a <NA> a
2 2 <NA> b b
3 3 a b a-b
4 4 <NA> b b
5 5 <NA> b b