$ rails console >> 1.year.from_now => Sun, 13 Mar 2011 03:38:55 UTC +00:00 >> 10.weeks.ago => Sat, 02 Jan 2010 03:39:14 UTC +00:00 >> 1.hour.from_now => Sun, 12 Aug 2012 09:52:39 UTC +00:00 >> 30.seconds.from_now => Sun, 12 Aug 2012 08:54:00 UTC +00:00
my personal notepad - for all the things I used to write on pieces of paper ( which where never seen again esp. when I needed them ) ...
Sunday, August 12, 2012
ruby rails - examples for date time helpers
with the time helpers it is amazingly easy to deal with dates and times (add, diff...)
Thursday, August 9, 2012
rails haml - translations
<%= yield %> --> .content#content= yield
<%= csrf_meta_tag %> --> = csrf_meta_tag
<%= csrf_meta_tag %> --> = csrf_meta_tag
use stylesheets
<%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %> --> = stylesheet_link_tag 'main'
ruby rails - set up autotest
http://www.andrewsturges.com/2011/06/installing-autotest-with-rails-31-and.html
+ run: rails g rspec:install (rspec-rails have to be installed)
+ run: rails g rspec:install (rspec-rails have to be installed)
Wednesday, August 8, 2012
ruby - problems with rvm
if rvm does not set the right ruby version:
http://stackoverflow.com/questions/9056008/installed-ruby-1-9-3-with-rvm-but-command-line-doesnt-show-ruby-v/9056395#9056395
http://stackoverflow.com/questions/9056008/installed-ruby-1-9-3-with-rvm-but-command-line-doesnt-show-ruby-v/9056395#9056395
Saturday, August 4, 2012
R ggplot - rebuild cdc obesity maps - 1984-2011
redoing the cdc obesity maps with ggplot2
![]() |
| rebuild cdc obesity maps with ggplot |
Slideshow
- first obese rates
- second overweight rates
- and if the slide show does not work - here is the link to the
pictures
Table of Contents
1 get the data
- I downloaded the data from http://www.cdc.gov/brfss/technical_infodata/surveydata.htm
- for the years 1984 - 1997 I use read.xport() (foreign package) on the sas xpt files
- then the data sets became to large, so I used the ascii files read.fortran() and choose just a few columns
- here is a resulting example data set (2006 - I computed the bmi2 column for checking)
- 2012-09: I added the maps for 2011 since the new data were out
head(x2006)
State month day year age weight height sex htm wkg bmi bmigr bmirisk 1 1 5 2 2006 66 263 503 2 160 11955 4669 3 2 2 1 9 19 2006 56 290 603 1 191 13182 3632 3 2 3 1 12 12 2006 40 230 511 1 180 10455 3215 3 2 4 1 4 29 2006 38 320 603 1 191 14545 4008 3 2 5 1 4 29 2006 52 120 504 2 163 5455 2064 1 1 6 1 8 2 2006 32 165 510 2 178 7500 2372 1 1 heightcm weightkg bmi2 1 160.02 119.29417 46.58764 2 190.50 131.54110 36.24695 3 180.34 104.32570 32.07799 4 190.50 145.14880 39.99664 5 162.56 54.43080 20.59763 6 177.80 74.84235 23.67467
2 compute rates and plot the graphs
library(ggplot2)
library(scales)
library(plyr)
library(maps)
## map of the states (part of the map package)
states_map <- map_data("state")
states_map$region <- factor(states_map$region)
## got fips form here and saved it as txt; http://www.epa.gov/enviro/html/codes/state.html
fips <- read.table("states.txt",sep="\t",header=T)
fips$State.Name <- tolower(as.character(fips$State.Name))
## build the graphs
filenames <- paste("bmi",1984:2010,".rdata",sep="")
for(file in filenames){
load(file)
year <- substr(file,4,7)
x <- get(paste("x",year,sep=""))
## for adding the year to the plot
testdf <- data.frame(x2=-70,y2=49,year=year)
## for the first 4 years was no bmi in the data set
## I named my computed one "bmi" so I need another "bmi2" for the loop, not very sophisticated,
## but it works
if(!("bmi2" %in% names(x))){
print(file)
x$bmi2 <- x$bmi
}
## bmi groups
x$bmi2gr <- cut(x$bmi2,breaks=c(0,25,30,300),include.lowest=T,labels=c("1","2","3"))
## count
x <- ddply(x,.(State),transform,perstate=sum(!is.na(bmi2)))
x <- ddply(x,.(State,bmi2gr),transform,perstate.gr=sum(!is.na(bmi2)))
dats <- unique(x[,c("State","bmi2gr","perstate","perstate.gr")])
dats <- dats[!is.na(dats$bmi2gr),]
## percents
dats$perc <- dats$perstate.gr/dats$perstate
dats$ow <- as.numeric(dats$bmi2gr) > 1
## I just want the obese and overweight
## >= 25
dats2 <- dats[dats$ow==T,]
dats2 <- ddply(dats2,.(State),summarize,perc=sum(perc))
dats2$gr <- "ow"
## >= 30
dats3 <- dats[dats$bmi2gr=="3",c("State","perc")]
dats3$gr <- "obese"
dats <- rbind(dats2,dats3)
## identify the states in the data set using the region names in the map (fips coded)
dats <- merge(dats,fips[,2:3],by.x="State",by.y="FIPS.Code",all=T)
dats$gr[is.na(dats$gr)] <- "obese"
dats$State.Name <- factor(dats$State.Name)
## graph
ggplot(dats[dats$gr=="obese",],aes(map_id = State.Name)) +
geom_map(aes(fill=perc),colour="black",map = states_map) +
expand_limits(x = states_map$long, y = states_map$lat) +
scale_fill_gradientn(limits=c(0.1,0.7),colours=cols,guide = guide_colorbar(),na.value="grey50") +
geom_text(data=testdf,aes(x=x2,y=y2,label=year),inherit.aes=F)
## save image
ggsave(file=paste("obese",substr(file,4,7),".png",sep=""))
}
output
[1] "bmi1984.rdata" Saving 12.7 x 7.01 in image [1] "bmi1985.rdata" Saving 12.7 x 7.01 in image [1] "bmi1986.rdata" Saving 12.7 x 7.01 in image [1] "bmi1987.rdata" Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image Saving 12.7 x 7.01 in image
Date: 2012-08-04 21:24:07 CEST
Author: mandy
Org version 7.8.02 with Emacs version 23
Validate XHTML 1.0
Labels:
cdc
,
obesity
,
R
,
R ggplot
,
R graphics
,
R map graphics
,
R maps
Subscribe to:
Comments
(
Atom
)

