1

How to count how many times there is a string (Yes) and give the result in a new column

Affiliation
Yes,Yes
Yes,Yes,Yes,Yes
Yes,Yes,Yes
Yes,No,Yes
No,Yes,Yes
Yes,Yes,Yes,Yes,Yes,Yes,Yes
Yes,Yes,No,Yes,Yes,Yes,Yes

and expected result

Affiliation                      Sum
Yes,Yes                          2
Yes,Yes,Yes,Yes                  4
Yes,Yes,Yes                      3
Yes,No,Yes                       2
No,Yes,Yes                       2
Yes,Yes,Yes,Yes,Yes,Yes,Yes      7
Yes,Yes,No,Yes,Yes,Yes,Yes       6

Any advice will be helpful

Henrik
  • 65,555
  • 14
  • 143
  • 159
GrBa
  • 381
  • 1
  • 9

1 Answers1

1

You can use str_count from stringr to count number of times "Yes" occurred in each row.

library(dplyr)
library(stringr)

df %>% mutate(count = str_count(Affiliation, 'Yes'))

#                  Affiliation count
#1                     Yes,Yes     2
#2             Yes,Yes,Yes,Yes     4
#3                 Yes,Yes,Yes     3
#4                  Yes,No,Yes     2
#5                  No,Yes,Yes     2
#6 Yes,Yes,Yes,Yes,Yes,Yes,Yes     7
#7  Yes,Yes,No,Yes,Yes,Yes,Yes     6

In base R, you can split the string on comma and count number of "Yes"

sapply(strsplit(df$Affiliation, ','), function(x) sum(x == 'Yes'))

data

df <- structure(list(Affiliation = c("Yes,Yes", "Yes,Yes,Yes,Yes", 
"Yes,Yes,Yes", "Yes,No,Yes", "No,Yes,Yes", "Yes,Yes,Yes,Yes,Yes,Yes,Yes", 
"Yes,Yes,No,Yes,Yes,Yes,Yes")), class = "data.frame", row.names = c(NA, -7L))
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213