Skip to content

How to graph categorical data by percent

1 message · arun

#
Hi,
Try:
dat1 <- structure(list(Site = c("Downstream", "Downstream", "Downstream", 
"Downstream", "Downstream", "Downstream", "Downstream", "Downstream", 
"Downstream", "Midstream", "Midstream", "Midstream", "Midstream", 
"Midstream", "Upstream", "Upstream", "Upstream", "Upstream", 
"Upstream", "Upstream", "Upstream", "Upstream", "Upstream", "Upstream", 
"Upstream", "Upstream", "Upstream", "Upstream"), Intersex = c("no", 
"no", "no", "no", "yes", "no", "yes", "no", "no", "yes", "no", 
"no", "no", "no", "yes", "yes", "yes", "yes", "yes", "no", "no", 
"yes", "yes", "no", "yes", "no", "yes", "yes")), .Names = c("Site", 
"Intersex"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", 
"27", "28"))


res1 <- aggregate(Intersex~Site,data=dat1,function(x) (table(x)/length(x))*100)
?res1New <- do.call(`data.frame`,res1)
#or
library(plyr)
res2 <- ddply(dat1,.(Site),summarize, Percent=(table(Intersex)/length(Intersex))*100)
?

plot(Intersex.yes~as.numeric(Site),data=res1New,xaxt="n",xlab="Site",ylim=c(0,100),type="b")
axis(1,at=as.numeric(res1New$Site),levels(res1New$Site))


A.K.

Hi I have the following dataset: 

?Site Intersex 
1 ?Downstream ? ? ? no 
2 ?Downstream ? ? ? no 
3 ?Downstream ? ? ? no 
4 ?Downstream ? ? ? no 
5 ?Downstream ? ? ?yes 
6 ?Downstream ? ? ? no 
7 ?Downstream ? ? ?yes 
8 ?Downstream ? ? ? no 
9 ?Downstream ? ? ? no 
10 ?Midstream ? ? ?yes 
11 ?Midstream ? ? ? no 
12 ?Midstream ? ? ? no 
13 ?Midstream ? ? ? no 
14 ?Midstream ? ? ? no 
15 ? Upstream ? ? ?yes 
16 ? Upstream ? ? ?yes 
17 ? Upstream ? ? ?yes 
18 ? Upstream ? ? ?yes 
19 ? Upstream ? ? ?yes 
20 ? Upstream ? ? ? no 
21 ? Upstream ? ? ? no 
22 ? Upstream ? ? ?yes 
23 ? Upstream ? ? ?yes 
24 ? Upstream ? ? ? no 
25 ? Upstream ? ? ?yes 
26 ? Upstream ? ? ? no 
27 ? Upstream ? ? ?yes 
28 ? Upstream ? ? ?yes 

I want to group the sites and calculate the percent of "yes" 
"no" for Intersex. ?Then I want to plot the prevalence of intersex 
(basically plot the percent of "yes" for each site. ?I'm stumped! 
?Thanks