This could work for you
library(tidyverse)
dat <- tribble(~col1, ~col2 ,~col3,
123, "Yes", "Happy, Sad",
1234, "Yes", "Sad",
12345, "Yes", NA,
12346, "Yes", "Mad, Sad")
dat %>%
mutate(col3 = str_split(col3, ", ")) %>%
unnest() %>%
count(col1, col2, col3) %>%
spread(key = col3, value = n) %>%
replace(is.na(.), 0)
#> # A tibble: 4 x 6
#> col1 col2 Happy Mad Sad `<NA>`
#> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 123 Yes 1 0 1 0
#> 2 1234 Yes 0 0 1 0
#> 3 12345 Yes 0 0 0 1
#> 4 12346 Yes 0 1 1 0
Created on 2019-01-16 by the reprex package (v0.2.1)