HAVE = data.frame( STUDENT =c( 1,1,2,2,2,3,3 ),
TEST =c( 'A','B','A','B','C','A','C' ))
WANT = data.frame(STUDENT=c(1,2,3),
A=c(1,1,1),
B=c(1,1,0),
C=c(0,1,1),
TOT=c(2,3,2),
TOT.NOT.A=c(1,2,1))
I have a vertical data and wish to convert to a horizontal data as shown above. I can do
WANT = HAVE %>% group_by(STUDENT) %>% mutate(TOT = n_distinct (TEST))
to get 'TOT' but I do not know how to get 'A' 'B' 'C' or 'TOT.NOT.A'