library(tidyverse)
dat%>%
group_by(Product_Name)%>%
mutate(Types=str_extract_all(Types,"\\w"))%>%
summarise(s=list(table(unlist(Types))))%>%
unstack(s~Product_Name)
$Prod1
A B C
2 2 3
$Prod2
Z
1
Использование базы R:
a=transform(dat,Types=gsub("[^,A-Za-z0-9]","",Types))
b=aggregate(Types~Product_Name,a,function(x)table(unlist(strsplit(unlist(x),","))))
unstack(rev(b))
$Prod1
A B C
2 2 3
$Prod2
Z
1