Создайте новую переменную, вставив две факторные переменные - PullRequest
1 голос
/ 14 января 2020

Если два столбца в моем фрейме данных:

species <- c("Dengue", "Dengue", "Dengue", "Dengue", "Dengue", "Dengue", "Dengue", "Dengue") 

И

strain <- c(1, NA, 2, NA, NA, 3, 4, 5)

Как мне получить столбец, который объединяет два, чтобы сказать Денге 1 и т. Д. c .

Ответы [ 2 ]

1 голос
/ 15 января 2020

Вы можете использовать ifelse для подавления NA в вашем конечном выводе:

paste0(species, ifelse(is.na(strain),"",strain))

 #>  [1] "Dengue1" "Dengue"  "Dengue2" "Dengue"  "Dengue"  "Dengue3" "Dengue4" "Dengue5"
1 голос
/ 14 января 2020

Мы можем использовать unite

library(dplyr)
library(tidyr)
library(stringr)
df1 %>% 
     unite(species, species, strain)

Если NA необходимо оставить как NA, используйте str_c

df1 %>%
   transmute(species = str_c(species, strain, sep="_")) %>%
   fill(species)

Если это filter из NAs, затем filter сначала

df1 %>%
   filter(!is.na(strain)) %>%
   transmute(species = str_c(species, strain, sep="_"))

данных

df1 <- data.frame(species, strain)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...