Mam tę ramkę danych df

df

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


class(df)
"factor"

Chciałbym wklejać litery „spp” w col2 za każdym razem, gdy występuje w col1 na przykład:

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

Próbowałem z:

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

Ale wynikiem jest podobna ramka danych df z ciągiem znaków i logiką wartości FALSE:

df.res                  
"Engraulis encrasicolus"        
"Sardina pilchardus"         
"FALSE"                
"Spicara"       
0
skylobo 14 listopad 2018, 13:40

1 odpowiedź

Najlepsza odpowiedź

Korzystanie z bazy R:

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

Lub jako dodatkowa kolumna w oryginalnej ramce danych:

df$col3 <- ifelse(grepl("spp", df$col1),
                  paste0(df$col2, " spp"), df$col2)
1
Jay Achar 14 listopad 2018, 14:04