In my DATA below, I wonder how to summarize() the number of 6 different Ethnicities (Hispanic, AmIndian, Asian, White, Pacific, AsiaPacific) chosen ("Y") when Ethinc_overall!="B"?
library(tidyverse)
DATA <- read.table(h=TRUE,text=
"EL_Type Language Black Hispanic AmIndian Asian White Pacific AsiaPacific Ethinc_overall
Current English Black Y N N N N N H
Current English Black N N N N N N B
Current English Black Y N N N N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N Y N N Y M
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y Y N Y N N H
Current English Black Y Y N N N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y Y N Y N N H
Current English Black Y Y N Y N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N Y N N M
Current English Black N Y N N N N M
Current English Black N N N N N N B
Current English Black N N Y N N Y M
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y Y N N N N H
Current English Black Y N N N N N H
Current English Black Y N N N N N H
Current English Black Y N N Y N N H
Current English Black Y Y N N Y Y H
Current English Black Y Y N N Y Y H
Current English Black Y N N N N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y Y Y Y Y Y H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y N N Y N N H
Current English Black Y N N Y N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y N N N N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y N N Y N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y N N Y N N H
Current English Black N N N N N N B
Current English Black Y N N N N N H
Current English Black N N N N N N B
Current English Black N N N N N N B
Current English Black Y N N N N N H
Current English Black Y N N N N N H
Current English Black Y N N N N N H
Current English Black N N N Y N N M
Current English Black N N N N N N B")
>Solution :
You can use the folowing code to count only occurrences of "Y":
DATA %>% filter(Ethinc_overall!="B") %>%
summarise_at(c('Hispanic', 'AmIndian', 'Asian', 'White', 'Pacific','AsiaPacific'),
function(x){sum(x=="Y")})
Explanation:
filter(Ethinc_overall!="B")– discards all rows for which value in
columnEthinc_overallis equal toBsummarise_at(where,what)– performs some operation (what) in given columns (where)function(x){sum(x=="Y")}– it is a function that checks if argument is equal to"Y"and sums allTRUEvalues in the column. You can pretty much change the content of the function as you like.
The outcome is:
Hispanic AmIndian Asian White Pacific AsiaPacific
<int> <int> <int> <int> <int> <int>
23 9 3 11 3 5