Recology

R/etc.

Farmer's markets data

    ggplot2 Datasets
 Source: .Rmd/.md

I combined USDA data on farmer’s markets in the US with population census data to get an idea of the disparity in farmers markets by state, and then also expressed per capita.

Download USDA data here. The formatted file I used below is here (in excel format, although I read into R as csv file). The census data is read from url as below.

California has a ton of absolute number of farmer’s markets, but Vermont takes the cake by far with number of markets per capita. Iowa comes in a distant second behind Vermont in markets per capita.



The code:
<div style="overflow: auto;"><div class="geshifilter"><pre class="r geshifilter-R" style="font-family: monospace;">######## Farmer’s Markets #############
setwd(“/Mac/R_stuff/Blog_etc/USDAFarmersMarkets”) # Set to your working directory, this is where you want to call files from and write files to
install.packages(c(“ggplot2”, “RCurl”)) # install all packags required below
require(ggplot2) # plyr is libraried along with ggplot2, as ggplot2 uses plyr (as well as package reshape) functions
 
# read market data
markets <- read.csv(“farmmarkets.csv”)
markets$state <- as.factor(gsub(“Wyoming “, “Wyoming”, markets$LocAddState)) # there was a typo for Wyoming
markets <- na.omit(markets)
str(markets)
 
# read population census data
popcen <- read.csv(“http://www.census.gov/popest/national/files/NST_EST2009ALLDATA.csv”</span>)
popcen <- popcen[,c(4,5,6,17)]
str(popcen)
 
# summarize
markets
<- ddply(markets, .(state), summarise,
markets_n = length(LocAddState)
)
 
markets_pop_ <- merge(markets_, popcen[,-1], by.x = “state”, by.y = “NAME”) # merge two data sets
markets_pop_$marketspercap <- markets_pop_$markets_n/markets_pop_$POPESTIMATE2009 # create column of markets per capita
markets_pop_$markets_n_st <- markets_pop_$markets_n/max(markets_pop_$markets_n)
markets_pop_$marketspercap_st <- markets_pop_$marketspercap/max(markets_pop_$marketspercap)
 
# plot
ggplot(melt(markets_pop_[,-c(2:5)]), aes(x = state, y = value, fill = variable)) +
geom_bar(position = “dodge”) +
coord_flip()
ggsave(“fmarkets_barplot.jpeg”)</pre></div></div>Created by Pretty R at inside-R.org

Note: the x-axis here is standardized value of number of markets (markets_n_st) and number of markets per capita (marketspercap_st).



<div style="overflow-x: auto; overflow-y: auto;"><div class="geshifilter"><pre class="r geshifilter-R" style="font-family: monospace; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"># maps
try_require(“maps”)
states <- map_data(“state”)
markets_pop_$statelow <- tolower(markets_pop_$state)
survey_sum_map <- merge(states, markets_pop_, by.x = “region”, by.y = “statelow”)
survey_sum_map <- survey_sum_map[order(survey_sum_map$order), ]
str(survey_sum_map)
 
qplot(long, lat, data = survey_sum_map, group = group, fill = markets_n, geom = “polygon”, main = “Total farmer’s markets”) +
scale_fill_gradient(low=“green”, high=“black”)
ggsave(“fmarkets_map_green.jpeg”) </pre></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Created by Pretty R at inside-R.org</div><div>
</div>





<div style="overflow-x: auto; overflow-y: auto;"><div class="geshifilter"><pre class="r geshifilter-R" style="font-family: monospace; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"></pre><pre class="r geshifilter-R" style="font-family: monospace; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"></pre><pre class="r geshifilter-R" style="font-family: monospace; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">qplot(long, lat, data = survey_sum_map, group = group, fill = marketspercap, geom = “polygon”, main = “Farmer’s markets per person”) +
scale_fill_gradient(low=“green”, high=“black”)
 
ggsave(“fmarkerspercap_map_green.jpeg”) </pre></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Created by Pretty R at inside-R.org</div><div>
</div>
<div class="separator" style="clear: both; text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="overflow: auto;"><div class="geshifilter"><pre class="r geshifilter-R" style="font-family: monospace;"></pre></div></div><div class="separator" style="clear: both; text-align: center;">
</div>

comments powered by Disqus