如何在R中合并两列但保留NA?

时间:2018-09-27 22:02:54

标签: r

我有一个包含以下列的数据框:

      Genus       Species
1 Somniosus microcephalus
2 Somniosus            NA
3        NA microcephalus
4 Somniosus microcephalus
5        NA            NA

我希望得到一个看起来像这样的东西:

     Genus       Species                      GS
1 Somniosus microcephalus Somniosus microcephalus
2 Somniosus            NA                      NA
3        NA microcephalus                      NA
4 Somniosus microcephalus Somniosus microcephalus
5        NA            NA                      NA

即我想将“属”和“物种”列中的信息合并到一个新列中。但是,如果“属”或“种类”列中存在NA,则我希望结果值是一个NA值。虽然我了解解决问题的逻辑,但我担心我对R的经验不足,无法提出正确的语法。

2 个答案:

答案 0 :(得分:3)

像这样使用ifelse

> transform(df1, GS=ifelse(is.na(Genus)| is.na(Species), NA, paste(Genus, Species)))
      Genus       Species                      GS
1 Somniosus microcephalus Somniosus microcephalus
2 Somniosus          <NA>                    <NA>
3      <NA> microcephalus                    <NA>
4 Somniosus microcephalus Somniosus microcephalus
5      <NA>          <NA>                    <NA>

按照@thelatemail的建议使用complete.cases

transform(df1, GS=ifelse(complete.cases(df1), paste(Genus, Species), NA))

答案 1 :(得分:2)

您可以像这样直接使用粘贴功能:

df$GS <- ifelse(is.na(df$Genus) | is.na(df$Species), NA, paste(df$Genus, df$Species, sep = " "))