Как вставить символьную строку на основе условия this в r? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть этот фрейм данных df

df

 col1                          col2 
Engraulis encrasicolus        Engraulis encrasicolus 
Sardina pilchardus            Sardina pilchardus
Scomber spp                   Scomber
Spicara                       Spicara


class(df)
"factor"

Я бы хотел вставить буквы 'spp' в col2 каждый раз, когда присутствует в col1 например:

       col1                          col2 
Engraulis encrasicolus        Engraulis encrasicolus 
Sardina pilchardus            Sardina pilchardus
Scomber spp                   Scomber spp
Spicara                       Spicara

Я пытался с:

df.res <- ifelse(df$col1 %like% "spp"==T,
       paste("spp",collapse=NULL) %in% df$col2,df$col1)

но в результате получается аналогичный фрейм данных df со строкой символов и логикой значений FALSE:

df.res                  
"Engraulis encrasicolus"        
"Sardina pilchardus"         
"FALSE"                
"Spicara"       

1 Ответ

0 голосов
/ 14 ноября 2018

Использование Base R:

df.res <- ifelse(grepl("spp", df$col1),
                 paste0(df$col2, " spp"), df$col2)

Или как дополнительный столбец в исходном фрейме данных:

df$col3 <- ifelse(grepl("spp", df$col1),
                  paste0(df$col2, " spp"), df$col2)
...