I am regularly running into a problem where I can't seem to figure out how
maintain correct data order when selecting data out of a dataframe.  The
below code shows an example of trying to pull data from a dataframe using
ordered zip codes.  My problem is returning the pulled data in the correct
order.  This is a very simple example, but it illustrates a regular problem
that I am running into.

In the past, I have used fairly complicated solutions to pull this off.
 There has got to be a more simple and straightforward method ... probably
some function that I missed in all my googling.

Thanks in advance for anybody's help figuring this out.
~Markus


### Function Definitions ###

# FUNCTION #1 (returns wrong order)
getLatitude1 = function(myzips) {

  # load libraries and data
  library(zipcode)
  data(zipcode)

  # get latitude values
  mylats = zipcode[zipcode$zip %in% myzips, "latitude"] #problem is that
this code does not maintain order

  # return data
  return(mylats)
}

# FUNCTION #2 (also returns wrong order)
getLatitude2 = function(myzips) {

  # load libraries and data
  library(zipcode)
  data(zipcode)

  # convert myzips to DF
  myzips = as.data.frame(as.character(myzips))

  # merge in zipcode data based on zip
  results = merge(myzips, zipcode[,c("zip", "latitude")], by.x =
"as.character(myzips)", by.y="zip", all.x=TRUE)

  # return data
  return(results$latitude)
}


### Code ###

# specify a set of zip codes
myzips = c("74432", "72537", "06026", "01085", "65793")

# create a DF
myzips.df = data.frame(zip=myzips, latitude=NA, longitude=NA)

# look at data to determine what should be returned and in what order
library(zipcode)
data(zipcode)
zipcode[zipcode$zip %in% myzips,]

# test function #1 (function definition below)
myzips.df$latitude = getLatitude1(myzips.df$zip) #returns wrong order

# test function #2 (function definition below)
myzips.df$latitude = getLatitude2(myzips.df$zip) #also returns wrong order



# need "myzips %in% zipcode$zip" to return array/df indices rather than
logical

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to