0

I have a data frame below where I want to add a new column where if language spoken is English then 1 else 0

language_spoken
         Jap;Fre
         Jap;Fre
         Fre;Ch
         Eng
         Eng;Jap
         Hindi;Eng
               
         Eng;Spanish;Fre
         Spanish;Jap
         Spanish

Final dataframe

      language_spoken   Eng
         Jap;Fre         0
         Jap;Fre         0
         Fre;Ch          0
         Eng             1
         Eng;Jap         1
         Hindi;Eng       1
                         0
        Eng;Spanish;Fre  1
        Spanish;Jap      0
        Spanish          0

what I tried is below but it's not working

     b <- data.frame(model.matrix(~.-1,data))
     b

Sample data set below:

     data <- data.frame(language_spoken = c("Jap;Fre","Jap;Fre","Fre;Ch","Eng","Eng;Jap","Hindi;Eng","","Eng;Spanish;Fre","Spanish;Jap","Spanish"))

2 Answers 2

2

In base R this will work:

data$Eng <- as.integer(grepl("Eng", data$language_spoken))

data
#>    language_spoken Eng
#> 1          Jap;Fre   0
#> 2          Jap;Fre   0
#> 3           Fre;Ch   0
#> 4              Eng   1
#> 5          Eng;Jap   1
#> 6        Hindi;Eng   1
#> 7                    0
#> 8  Eng;Spanish;Fre   1
#> 9      Spanish;Jap   0
#> 10         Spanish   0

This would be one tidyverse approach:

library(dplyr)
library(stringr)

data %>%
  mutate(Eng = as.numeric(str_detect(language_spoken, "Eng")))

#>    language_spoken Eng
#> 1          Jap;Fre   0
#> 2          Jap;Fre   0
#> 3           Fre;Ch   0
#> 4              Eng   1
#> 5          Eng;Jap   1
#> 6        Hindi;Eng   1
#> 7                    0
#> 8  Eng;Spanish;Fre   1
#> 9      Spanish;Jap   0
#> 10         Spanish   0

Created on 2021-07-21 by the reprex package (v0.3.0)

Sign up to request clarification or add additional context in comments.

Comments

1

Does this work:

library(dplyr)
df %>% mutate(End = +grepl('Eng',language_spoken))
            language_spoken End
1                   Jap;Fre   0
2                   Jap;Fre   0
3                    Fre;Ch   0
4                       Eng   1
5                   Eng;Jap   1
6                 Hindi;Eng   1
7                             0
8           Eng;Spanish;Fre   1
9               Spanish;Jap   0
10                  Spanish   0

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.