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