我有一个包含以下列的数据框:
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的经验不足,无法提出正确的语法。
答案 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 = " "))