{"id":864,"date":"2015-07-30T16:36:49","date_gmt":"2015-07-30T23:36:49","guid":{"rendered":"http:\/\/homepages.uc.edu\/~yaozo\/wordpress\/?p=864"},"modified":"2015-07-30T16:36:49","modified_gmt":"2015-07-30T23:36:49","slug":"using-loops-with-ggplot2","status":"publish","type":"post","link":"https:\/\/zhuoyao.net\/index.php\/2015\/07\/30\/using-loops-with-ggplot2\/","title":{"rendered":"Using Loops with ggplot2"},"content":{"rendered":"<pre class=\"r\"><code class=\"r\"><span class=\"keyword\">http:\/\/reed.edu\/data-at-reed\/resources\/R\/loops_with_ggplot2.html\n\n\nlibrary<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">stringr<\/span><span class=\"paren\">)<\/span>\n<span class=\"keyword\">library<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">reshape2<\/span><span class=\"paren\">)<\/span>\n<span class=\"keyword\">library<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">ggplot2<\/span><span class=\"paren\">)<\/span>\n<span class=\"keyword\">library<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">ggthemes<\/span><span class=\"paren\">)<\/span>\n<span class=\"keyword\">library<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">pander<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"comment\"># update this file path to point toward appropriate folders on your computer<\/span>\n\n<span class=\"comment\"># folder where you want the graphs to be saved:<\/span>\n<span class=\"identifier\">results<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"string\">\"\/Users\/majerus\/Desktop\/NJAIS\/results\/\"<\/span>  \n\n<span class=\"comment\"># folder where the data is saved:<\/span>\n<span class=\"identifier\">labor<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"string\">\"\/Users\/majerus\/Desktop\/NJAIS\/data\/dept_labor\/age_lvl\/\"<\/span>\n\n<span class=\"comment\"># create list of all .csv files in folder <\/span>\n<span class=\"identifier\">file_list<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">list.files<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">path<\/span><span class=\"operator\">=<\/span><span class=\"identifier\">labor<\/span>, <span class=\"identifier\">pattern<\/span><span class=\"operator\">=<\/span><span class=\"string\">\"*.csv\"<\/span><span class=\"paren\">)<\/span> \n\n<span class=\"comment\"># read in each .csv file in file_list and rbind them into a data frame called data.labor <\/span>\n<span class=\"identifier\">data.labor<\/span> <span class=\"operator\">&lt;-<\/span> \n  <span class=\"identifier\">do.call<\/span><span class=\"paren\">(<\/span><span class=\"string\">\"rbind\"<\/span>, \n          <span class=\"identifier\">lapply<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">file_list<\/span>, \n                 <span class=\"keyword\">function<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">x<\/span><span class=\"paren\">)<\/span> \n                   <span class=\"identifier\">cbind<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">year<\/span> <span class=\"operator\">=<\/span> <span class=\"identifier\">as.numeric<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">str_sub<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">x<\/span>, <span class=\"number\">1<\/span>, <span class=\"number\">4<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span>,\n                         <span class=\"identifier\">read.csv<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">paste<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">labor<\/span>, <span class=\"identifier\">x<\/span>, <span class=\"identifier\">sep<\/span><span class=\"operator\">=<\/span><span class=\"string\">''<\/span><span class=\"paren\">)<\/span>, \n                            <span class=\"identifier\">stringsAsFactors<\/span> <span class=\"operator\">=<\/span> <span class=\"literal\">FALSE<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"comment\"># remove commas from numeric variables<\/span>\n<span class=\"identifier\">data.labor<\/span><span class=\"paren\">[<\/span>,<span class=\"identifier\">c<\/span><span class=\"paren\">(<\/span><span class=\"number\">3<\/span><span class=\"operator\">:<\/span><span class=\"number\">12<\/span><span class=\"paren\">)<\/span><span class=\"paren\">]<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">lapply<\/span><span class=\"paren\">(<\/span>\n                          <span class=\"identifier\">data.labor<\/span><span class=\"paren\">[<\/span>,<span class=\"identifier\">c<\/span><span class=\"paren\">(<\/span><span class=\"number\">3<\/span><span class=\"operator\">:<\/span><span class=\"number\">12<\/span><span class=\"paren\">)<\/span><span class=\"paren\">]<\/span>, \n                          <span class=\"keyword\">function<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">x<\/span><span class=\"paren\">)<\/span> <span class=\"paren\">{<\/span><span class=\"identifier\">as.numeric<\/span><span class=\"paren\">(<\/span> \n                            <span class=\"identifier\">gsub<\/span><span class=\"paren\">(<\/span><span class=\"string\">\",\"<\/span>, <span class=\"string\">\"\"<\/span>, <span class=\"identifier\">x<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span><span class=\"paren\">}<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"comment\"># drop 2010 from data then data and projections will occur in 5 year intervals <\/span>\n<span class=\"identifier\">data.labor<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">subset<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">data.labor<\/span>, <span class=\"identifier\">data.labor<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">year<\/span><span class=\"operator\">!=<\/span><span class=\"number\">2010<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"comment\"># rename cols <\/span>\n<span class=\"identifier\">colnames<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">data.labor<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">c<\/span><span class=\"paren\">(<\/span><span class=\"string\">\"Year\"<\/span>,   <span class=\"string\">\"County\"<\/span>, <span class=\"string\">\"Total\"<\/span>,  \n                          <span class=\"string\">\"Under 5\"<\/span>,  <span class=\"string\">'5 to 9 years'<\/span>, <span class=\"string\">'10 to 14 years'<\/span>, <span class=\"string\">'15 to 19 years'<\/span>, \n                          <span class=\"string\">\"X20.24\"<\/span>, <span class=\"string\">\"X25.29\"<\/span>, <span class=\"string\">\"X30.34\"<\/span>, <span class=\"string\">\"X35.39\"<\/span>, <span class=\"string\">\"X40.44\"<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"comment\"># select columns of interest<\/span>\n<span class=\"identifier\">keep<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">c<\/span><span class=\"paren\">(<\/span><span class=\"string\">\"Year\"<\/span>, <span class=\"string\">\"County\"<\/span>, <span class=\"string\">\"Total\"<\/span>, <span class=\"string\">'Under 5'<\/span>, \n          <span class=\"string\">'5 to 9 years'<\/span>, <span class=\"string\">'10 to 14 years'<\/span>, <span class=\"string\">'15 to 19 years'<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"identifier\">data.labor<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">data.labor<\/span><span class=\"paren\">[<\/span><span class=\"identifier\">keep<\/span><span class=\"paren\">]<\/span>\n\n<span class=\"comment\"># melt data to long format <\/span>\n<span class=\"identifier\">data.labor.long<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">melt<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">data.labor<\/span>, <span class=\"identifier\">id.vars<\/span><span class=\"operator\">=<\/span><span class=\"identifier\">c<\/span><span class=\"paren\">(<\/span><span class=\"string\">\"County\"<\/span>, <span class=\"string\">\"Year\"<\/span><span class=\"paren\">)<\/span>, <span class=\"identifier\">variable.name<\/span><span class=\"operator\">=<\/span><span class=\"string\">\"category\"<\/span><span class=\"paren\">)<\/span>\n\n<span class=\"comment\"># remove total projections and state level projections from data<\/span>\n<span class=\"identifier\">data.labor.long<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">subset<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">data.labor.long<\/span>, <span class=\"identifier\">data.labor.long<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">category<\/span><span class=\"operator\">!=<\/span><span class=\"string\">'Total'<\/span><span class=\"paren\">)<\/span>\n<span class=\"identifier\">data.labor.long<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">subset<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">data.labor.long<\/span>, <span class=\"identifier\">data.labor.long<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">County<\/span><span class=\"operator\">!=<\/span><span class=\"string\">'New Jersey'<\/span><span class=\"paren\">)<\/span>\n \n<span class=\"comment\"># create graphing function<\/span>\n<span class=\"identifier\">county.graph<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"keyword\">function<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">df<\/span>, <span class=\"identifier\">na.rm<\/span> <span class=\"operator\">=<\/span> <span class=\"literal\">TRUE<\/span>, <span class=\"keyword\">...<\/span><span class=\"paren\">)<\/span><span class=\"paren\">{<\/span>\n  \n  <span class=\"comment\"># create list of counties in data to loop over <\/span>\n  <span class=\"identifier\">county_list<\/span> <span class=\"operator\">&lt;-<\/span> <span class=\"identifier\">unique<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">df<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">County<\/span><span class=\"paren\">)<\/span>\n  \n  <span class=\"comment\"># create for loop to produce ggplot2 graphs <\/span>\n  <span class=\"keyword\">for<\/span> <span class=\"paren\">(<\/span><span class=\"identifier\">i<\/span> <span class=\"keyword\">in<\/span> <span class=\"identifier\">seq_along<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">county_list<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span> <span class=\"paren\">{<\/span> \n    \n    <span class=\"comment\"># create plot for each county in df <\/span>\n    <span class=\"identifier\">plot<\/span> <span class=\"operator\">&lt;-<\/span> \n      <span class=\"identifier\">ggplot<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">subset<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">df<\/span>, <span class=\"identifier\">df<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">County<\/span><span class=\"operator\">==<\/span><span class=\"identifier\">county_list<\/span><span class=\"paren\">[<\/span><span class=\"identifier\">i<\/span><span class=\"paren\">]<\/span><span class=\"paren\">)<\/span>,\n             <span class=\"identifier\">aes<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">Year<\/span>, <span class=\"identifier\">value<\/span><span class=\"operator\">\/<\/span><span class=\"number\">1000<\/span>, <span class=\"identifier\">group<\/span> <span class=\"operator\">=<\/span> <span class=\"identifier\">County<\/span>, <span class=\"identifier\">colour<\/span> <span class=\"operator\">=<\/span> <span class=\"identifier\">category<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span> \n      \n      <span class=\"identifier\">geom_line<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">size<\/span><span class=\"operator\">=<\/span><span class=\"number\">2<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span>\n      <span class=\"identifier\">facet_wrap<\/span><span class=\"paren\">(<\/span> <span class=\"operator\">~<\/span>  <span class=\"identifier\">category<\/span>, <span class=\"identifier\">ncol<\/span><span class=\"operator\">=<\/span><span class=\"number\">2<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span>\n      \n      <span class=\"identifier\">theme_pander<\/span><span class=\"paren\">(<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span>\n      <span class=\"identifier\">theme<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">legend.position<\/span><span class=\"operator\">=<\/span><span class=\"string\">\"none\"<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span> \n      \n      <span class=\"identifier\">scale_y_continuous<\/span><span class=\"paren\">(<\/span><span class=\"string\">\"County Population within Age Categories (thousands)\"<\/span>, \n                         <span class=\"identifier\">limits<\/span><span class=\"operator\">=<\/span><span class=\"identifier\">c<\/span><span class=\"paren\">(<\/span><span class=\"number\">0<\/span>, <span class=\"identifier\">max<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">df<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">value<\/span><span class=\"paren\">[<\/span><span class=\"identifier\">df<\/span><span class=\"operator\">$<\/span><span class=\"identifier\">County<\/span><span class=\"operator\">==<\/span><span class=\"identifier\">county_list<\/span><span class=\"paren\">[<\/span><span class=\"identifier\">i<\/span><span class=\"paren\">]<\/span><span class=\"paren\">]<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span><span class=\"operator\">\/<\/span><span class=\"number\">1000<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span>\n      <span class=\"identifier\">scale_x_continuous<\/span><span class=\"paren\">(<\/span><span class=\"string\">\"Year\"<\/span><span class=\"paren\">)<\/span> <span class=\"operator\">+<\/span>\n      \n      <span class=\"identifier\">ggtitle<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">paste<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">county_list<\/span><span class=\"paren\">[<\/span><span class=\"identifier\">i<\/span><span class=\"paren\">]<\/span>, <span class=\"string\">' County, New Jersey \\n'<\/span>, \n                    <span class=\"string\">\"County Population Projection within Age Categories (thousands) \\n\"<\/span>,\n                    <span class=\"identifier\">sep<\/span><span class=\"operator\">=<\/span><span class=\"string\">''<\/span><span class=\"paren\">)<\/span><span class=\"paren\">)<\/span>\n    \n    <span class=\"comment\"># save plots as .png<\/span>\n    <span class=\"comment\"># ggsave(plot, file=paste(results, <\/span>\n    <span class=\"comment\">#                        'projection_graphs\/county_graphs\/',<\/span>\n    <span class=\"comment\">#                        county_list[i], \".png\", sep=''), scale=2)<\/span>\n   \n    <span class=\"comment\"># save plots as .pdf<\/span>\n    <span class=\"comment\"># ggsave(plot, file=paste(results, <\/span>\n    <span class=\"comment\">#                        'projection_graphs\/county_graphs\/',<\/span>\n    <span class=\"comment\">#                        county_list[i], \".pdf\", sep=''), scale=2)<\/span>\n    \n    <span class=\"comment\"># print plots to screen<\/span>\n    <span class=\"identifier\">print<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">plot<\/span><span class=\"paren\">)<\/span>\n  <span class=\"paren\">}<\/span>\n<span class=\"paren\">}<\/span>\n\n<span class=\"comment\"># run graphing function on long df<\/span>\n<span class=\"identifier\">county.graph<\/span><span class=\"paren\">(<\/span><span class=\"identifier\">data.labor.long<\/span><span class=\"paren\">)\n\n\n\n<\/span><\/code><\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/reed.edu\/data-at-reed\/resources\/R\/loops_with_ggplot2.html library(stringr) library(reshape2) library(ggplot2) library(ggthemes) library(pander) # update this file path to point toward appropriate folders on your computer # folder where you want the&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-864","post","type-post","status-publish","format-standard","hentry","category-r"],"_links":{"self":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/comments?post=864"}],"version-history":[{"count":0,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/864\/revisions"}],"wp:attachment":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/media?parent=864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/categories?post=864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/tags?post=864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}