Press "Enter" to skip to content

Working with Statistics Canada Data in R, Part 5: Retrieving Census Data

[This article was first published on Data Enthusiast’s Blog, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)


Want to share your content on R-bloggers? click here if you have a blog, or here if you don’t.

Back to Working with Statistics Canada Data in R, Part 4.

Introduction

Now that we are ready to start working with Canadian Census data, let’s first briefly address the question why you may need to use it. After all, CANSIM data is often more up-to-date and covers a much broader range of topics than the national census data, which is gathered every five years in respect of a limited number of questions.

The main reason is that CANSIM data is far less granular geographically. Most of it is collected at the provincial or even higher regional level. You may be able to find CANSIM data on a limited number of questions for some of the country’s largest metropolitan areas, but if you need the data for a specific census division, city, town, or village, you’ll have to use the Census.

To illustrate the use of cancensus package, let’s do a small research project. First, in this post we’ll retrieve these key labor force characteristics of the largest metropolitan areas in each of the five geographic regions of Canada:

  • Labor force participation rate, employment rate, and unemployment rate.
  • Percent of workers by work situation: full time vs part time, by gender.
  • Education levels of people aged 25 to 64, by gender.

The cities (metropolitan areas) that we are going to look at, are: Calgary, Halifax, Toronto, Vancouver, and Whitehorse. We’ll also get these data for Canada as a whole for comparison and to illustrate the retrieval of data at different geographic levels

Next, in the upcoming Part 6 of the “Working with Statistics Canada Data in R” series, we will visualize these data, including making a faceted plot and writing a function to automate repetitive plotting tasks.

Keep in mind that cancensus also allows you to retrieve geospatial data, that is, borders of census regions at various geographic levels, in sp and sf formats. Retrieving and visualizing Statistics Canada geospatial data will be covered later in these series.

So, let’s get started by loading the required packages:

library(cancensus)
library(tidyverse)

Searching for Data

cancensus retrieves census data with the get_census function. get_census can take a number of arguments, the most important of which are dataset, regions, and vectors, which have no defaults. Thus, in order to be able to retrieve census data, you’ll first need to figure out:

  • your dataset,
  • your region(s), and
  • your data vector(s).

Find Census Datasets

Let’s see which census datasets are available through the CensusMapper API:

list_census_datasets()

Currently, datasets earlier than 2001 are not available, so if you need to work with the 20th century census data, you won’t be able to retrieve it with cancensus.

Find Census Regions

Next, let’s find the regions that we’ll be getting the data for. To search for census regions, use the search_census_regions function.

Let’s take a look at what region search returns for Toronto. Note that cancensus functions return their output as dataframes, so it is easy to subset. Here I limited the output to the most relevant columns to make sure it fits on screen. You can run the code without [c(1:5, 8)] to see all of it.

# all census levels
search_census_regions(searchterm = "Toronto", dataset = "CA16")[c(1:5, 8)]

Returns:

A tibble: 3 x 6
# region name level pop municipal_status PR_UID 1 35535 Toronto CMA 5928040 B 35 2 3520 Toronto CD 2731571 CDR 35 3 3520005 Toronto CSD 2731571 C 35 

You may have expected to get only one region: the city of Toronto, but instead you got three! So, what is the difference? Look at the column ‘level’ for the answer. Often, the same geographic region can be represented by several census levels, as is the case here. There are three levels for Toronto, which is simultaneously a census metropolitan area, a census division, and a census sub-division. Note also the ‘PR_UID’ column that contains numeric codes for Canada’s provinces and territories, which can help you distinguish between different census regions that have the same or similar names. For an example, run the code above replacing “Toronto” with “Windsor”.

Remember that we were going to plot the data for census metropolitan areas? You can choose the geographic level with the level argument, which can take the following values: ‘C’ for Canada (national level), ‘PR’ for province, ‘CMA’ for census metropolitan area, ‘CD’ for census division, ‘CSD’ for census sub-division, or NA:

# specific census level
search_census_regions("Toronto", "CA16", level = "CMA")

Let’s now list census regions that may be relevant for our project:

# explore available census regions
names 

purrr::map_df function applies search_census_regions iteratively to each element of the names vector and returns output as a single dataframe. Note also the ~ . syntax. Think of it as the tilde taking names and passing it as an argument to a place indicated by the dot in the search_census_regions function. You can find more about the tilde-dot syntax here. It may be a good idea to read the whole tutorial: purrr is a super-useful package, but not the easiest to learn, and this tutorial does a great job explaining the basics.

So as you can see, there are multiple entries for each search term, so we’ll need to choose the results for census metropolitan areas, and for census sub-division in case of Whitehorse, since Whitehorse is too small to be considered a census metropolitan area:

# select only the regions we need: CMAs (and CSD for Whitehorse)
regions % filter(grepl("Calgary|Halifax|Toronto|Vancouver", name) & grepl("CMA", level) | grepl("Canada|Whitehorse$", name)) %>% as_census_region_list()

Pay attention to the use of logical operators to filter the output by several conditions at once; also note using $ regex meta-character to choose the entry ending with ‘Whitehorse’ from the ‘names’ column (to filter out ‘Whitehorse, Unorganized’.

Finally, as_census_region_list converts list_census_regions output to a data object of type list that can be passed to the get_census function as its regions argument.

Find Census Vectors

Canadian census data is made up of individual variables, aka census vectors. Vector number(s) is another argument you need to specify in order to retrieve data with the get_census function.

cancensus has two functions that allow you to search through census data variables: list_census_vectors and search_census_vectors.

list_census_vectors returns all available vectors for a given dataset as a single dataframe containing vectors and their descriptions:

# structure of list_census_vectors output
str(list_census_vectors(dataset = 'CA16')) # count variables in 'CA16' dataset
nrow(list_census_vectors(dataset = 'CA16'))

As you can see, there are 6623 (as of the time of writing this) variables in the 2016 census dataset, so list_census_vectors won’t be the most convenient function to find a specific vector. Note however that there are situations (such as when you need to select a lot of vectors at once), in which list_census_vectors would be appropriate.

Usually it is more convenient to use search_census_vectors to search for vectors. Just pass the text string of what you are looking for as the searchterm argument. You don’t have to be precise: this function works even if you make a typo or are uncertain about the spelling of your search term.

Let’s now find census data vectors for labor force involvement rates:

# get census data vectors for labor force involvement rates
lf_vectors % union(search_census_vectors("participation rate", "CA16")) %>% filter(type == "Total") %>% pull(vector)

Let’s take a look at what this code does. Since searchterm doesn’t have to be a precise match, “employment rate” search term retrieves unemployment rate vectors too. In the next line, union merges dataframes returned by search_census_vectors into a single dataframe. Note that in this case union could be substituted with bind_rows. I recommend using union in order to avoid data duplication. Next, we choose only the “Total” numbers, since we are not going to plot labor force indicators by gender. Finally, the pull command extracts a single vector from the dataframe, just like the $ subsetting operator: we need ‘lf_vectors’ to be a data object of type vector in order to pass it to the vectors argument of the get_census function.

The second labor force indicator we are looking for, is the number of people who work full-time and part-time, broken down by gender. But before we proceed with getting the respective vectors, let me show you another way to figure out search terms to put inside the search_census_vectors function: use Statistics Canada online Census Profile tool. It can be used to quickly explore census data as well as to figure out variable names (search terms) and their hierarchical structure.

For example, let’s look at census labor data for Calgary metropolitan area. Scrolling down, you will quickly find the numbers and text labels for full-time and part-time workers:

Now we know the exact search terms, so we can get precisely the vectors we need, free from any extraneous data:

# get census data vectors for full and part time work # get vectors and labels work_vectors_labels % union(search_census_vectors("part year and/or part time", "CA16")) %>% filter(type != "Total") %>% select(1:3) %>% mutate(label = str_remove(label, ".*, |.*and/or ")) %>% mutate(type = fct_drop(type)) %>% setNames(c("vector", "gender", "type")) # extract vectors
work_vectors 

Note how this code differs from the code with which we extracted labor force involvement rates: since we need the data to be sub-divided both by the type of work and by gender (hence no “Total” values here), we create a dataframe that assigns respective labels to each vector number. This work_vectors_labels dataframe will supply categorical labels to be attached to the data retrieved with get_census.

Also, note these three lines:

 mutate(label = str_remove(label, ".*, |.*and/or ")) %>% mutate(type = fct_drop(type)) %>% setNames(c("vector", "gender", "type"))

The first mutate call removes all text up to and including ‘, ‘ and ‘and/or ‘ (spaces included) from the ‘label’ column. The second drops unused factor level “Total” – it is a good practice to make sure there are no unused factor levels if you are going to use ggplot2 to plot your data. Finally, setNames renames variables for convenience.

Finally, let’s retrieve vectors for the education data for the age group from 25 to 64 years, by gender. Before we do this, I’d like to draw your attention to the fact that some of the census data is hierarchical, which means that some variables (census vectors) are included into parent and/or include child variables. It is very important to choose vectors at proper hierarchical levels so that you do not double-count or omit your data.

Education data is a good example of hierarchical data. You can explore data hierarchy using parent_census_vectors and child_census_vectors functions as described here. However, you may find exploring the hierarchy visually using Statistics Canada Census Profile tool to be more convenient:

So, let’s now retrieve and label the education data vectors:

# get census vectors for education levels data # get vectors and labels
ed_vectors_labels % union(search_census_vectors("degree", "CA16")) %>% union(search_census_vectors("doctorate", "CA16")) %>% filter(type != "Total") %>% filter(grepl("25 to 64 years", details)) %>% slice(-1,-2,-7,-8,-11:-14,-19,-20,-23:-28) %>% select(1:3) %>% mutate(label = str_remove_all(label, " cert.*diploma| dipl.*cate|, CEGEP| level|")) %>% mutate(label = str_replace_all(label, c("No.*" = "None", "Secondary.*" = "High school or equivalent", "other non-university" = "equivalent", "University above" = "Cert. or dipl. above", "medicine.*" = "health**", ".*doctorate$" = "Doctorate*"))) %>% mutate(type = fct_drop(type)) %>% setNames(c("vector", "gender", "level")) # extract vectors
ed_vectors 

Note the slice function that allows to manually select specific rows from a dataframe: positive numbers choose rows to keep, negative numbers choose rows to drop. I used slice to drop the hierarchical levels from the data that are either too generalized or too granular. Note also that I had to edit text strings in the data. Finally, I added asterisks after “Doctorate” and “health”. These are not regex symbols, but actual asterisks that will be used to refer to footnotes in plot captions later on.

Now that we have figured out our dataset, regions, and data vectors (and labelled the vectors, too), we are finally ready to retrieve the data itself.

Retrieve Census Data

To retrieve census data, feed the dataset, regions, and data vectors into get_census as its’ respective arguments. Note also that get_census has use_cache argument (set to TRUE by default), which tells get_census to retrieve data from cache if available. If there is no cached data, the function will query CensusMapper API for the data and will save it in cache, while use_cache = FALSE will force get_census to query the API and update the cache.

# get census data for labor force involvement rates
# feed regions and vectors into get_census()
labor % select(-c(1, 2, 4:7)) %>% setNames(c("region", "employment rate", "unemployment rate", "participation rate")) %>% mutate(region = str_remove(region, " (.*)")) %>% pivot_longer("employment rate":"participation rate", names_to = "indicator", values_to = "rate") %>% mutate_if(is.character, as_factor)

The select call drops columns with irrelevant data, setNames renames columns to remove vector numbers from variable names, which will be then converted to values in the ‘indicator’ column; str_remove inside the mutate call drops municipal status codes ‘(B)’ and ‘(CY)’ from region names; finally, mutate_if converts characters to factors for subsequent plotting.

An important function here is tidyr::pivot_longer. It converts the dataframe from wide to long format. It takes three columns: ‘employment rate’, ‘unemployment rate’, and ‘participation rate’, and converts their names into values of the ‘indicator’ variable, while their numeric values are passed to the ‘rate’ variable. The reason for the conversion is that we are going to plot the data for all three labor force indicators in the same graphic, which makes it necessary to store the indicators as a single factor variable.

Next, let’s retrieve census data about the percent of full time vs part time workers, by gender, and the data about the education levels of people aged 25 to 64, by gender:

# get census data for full time and part time work
work % select(-c(1, 2, 4:7)) %>% rename(region = "Region Name") %>% pivot_longer(2:5, names_to = "vector", values_to = "count") %>% mutate(region = str_remove(region, " (.*)")) %>% mutate(vector = str_remove(vector, ":.*")) %>% left_join(work_vectors_labels, by = "vector") %>% mutate(gender = str_to_lower(gender)) %>% mutate_if(is.character, as_factor) # get census data for education levels
education % select(-c(1, 2, 4:7)) %>% rename(region = "Region Name") %>% pivot_longer(2:21, names_to = "vector", values_to = "count") %>% mutate(region = str_remove(region, " (.*)")) %>% mutate(vector = str_remove(vector, ":.*")) %>% left_join(ed_vectors_labels, by = "vector") %>% mutate_if(is.character, as_factor)

Note one important difference from the code I used to retrieve the labor force involvement data: here I added the dplyr::left_join function that joins labels to the census data.

We now have the data and are ready to visualize it, which will be done in the next post.

Annex: Notes and Definitions

For those of you who are outside of Canada, Canada’s geographic regions and their largest metropolitan areas are:

  • The Atlantic Provinces – Halifax
  • Central Canada – Toronto
  • The Prairie Provinces – Calgary
  • The West Coast – Vancouver
  • The Northern Territories – Whitehorse

These regions should not be confused with 10 provinces and 3 territories, which are Canada’s sub-national administrative divisions, much like states in the U.S. Each region consists of several provinces or territories, except the West Coast, which includes only one province – British Columbia. You can find more about Canada’s geographic regions and territorial structure here (pages 44 to 51).

For the definitions of employment rate, unemployment rate, labour force participation rate, full-time work, and part-time work, see Statistics Canada’s Guide to the Labour Force Survey.

You can find more about census geographic areas here and here. There is also a glossary of census-related geographic concepts.

The post Working with Statistics Canada Data in R, Part 5: Retrieving Census Data appeared first on Data Enthusiast’s Blog.



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook

80 Comments

  1. ปั้มไลค์ June 14, 2020

    Like!! Really appreciate you sharing this blog post.Really thank you! Keep writing.

  2. Hi there, after reading this amazing paragraph i am as well delighted to share my knowledge here with friends.

  3. SMS June 14, 2020

    I love looking through a post that can make people think. Also, many thanks for permitting me to comment!

  4. buy CBD August 1, 2020

    Its not my first time to pay a visit this website,
    i am visiting this site dailly and obtain nice data from here all
    the time.

    Look at my page – buy CBD

  5. best web hosting company August 10, 2020

    I know this website provides quality dependent posts and additional
    stuff, is there any other site which presents these stuff in quality?

  6. best web hosting company August 11, 2020

    Its not my first time to go to see this web site, i am browsing this site dailly
    and obtain pleasant facts from here everyday.

  7. Nice blog here! Also your web site rather a lot up fast!
    What web host are you the usage of? Can I get your associate link in your
    host? I wish my site loaded up as quickly as yours lol adreamoftrains web hosting sites

  8. website host August 14, 2020

    Awesome website you have here but I was wondering if you knew of any forums that cover the same
    topics discussed here? I’d really like to be a part of community where I can get feed-back from other experienced
    people that share the same interest. If you have any recommendations, please
    let me know. Cheers!

  9. web hosting service August 14, 2020

    Hey there would you mind letting me know which hosting company you’re utilizing?
    I’ve loaded your blog in 3 completely different web
    browsers and I must say this blog loads a lot faster then most.

    Can you recommend a good internet hosting provider at a reasonable price?
    Thanks a lot, I appreciate it!

  10. RonaldGinna August 16, 2020

    I’m lost! I didn’t think this would be so hard =(

  11. StephenThose August 17, 2020

    Truly hope it’s possible to find the best answer 🙁

    [url]https://www.viki.com/users/stillingdalrymple28v_648/about[/url]
    [url]http://www.interleads.net/classifieds/user/profile/144971[/url]

  12. RonaldGinna August 17, 2020

    Jesus! I had no idea this could be so challenging :-c

    [url]https://www.lurkerlounge.com/forums/user-56638.html[/url]

  13. xbox codes generator August 19, 2020

    You actually make it appear really easy together with
    your presentation but I find this matter to be actually something that I think I’d never understand.
    It kind of feels too complicated and very broad
    for me. I am having a look forward for your next submit, I will try to get the hold of it!

  14. senzori pescuit August 23, 2020

    I’m really enjoying the theme/design of your website. Do you
    ever run into any internet browser compatibility issues?

    A small number of my blog audience have complained about my website not operating correctly in Explorer but
    looks great in Chrome. Do you have any solutions to help fix this problem?

  15. cheap flights August 24, 2020

    Wow, awesome blog format! How lengthy have
    you ever been blogging for? you made blogging look easy.
    The whole glance of your site is excellent, as smartly as the
    content!

  16. cheap flights August 24, 2020

    It’s going to be finish of mine day, however before end I am reading
    this great post to increase my experience.

  17. cheap flights August 24, 2020

    I have read so many articles about the blogger lovers except this article
    is in fact a nice piece of writing, keep it up.
    cheap flights 3gqLYTc

  18. cheap flights August 25, 2020

    Hey there! Would you mind if I share your blog
    with my zynga group? There’s a lot of folks that I think would really appreciate your content.
    Please let me know. Thanks cheap flights y2yxvvfw

  19. website hosting services August 25, 2020

    Your style is really unique in comparison to other folks I have
    read stuff from. I appreciate you for posting when you have
    the opportunity, Guess I’ll just book mark this
    web site.

  20. cheap flights August 26, 2020

    Hello! This is my first visit to your blog! We are a team of volunteers and starting a new initiative in a community in the same niche.
    Your blog provided us useful information to work
    on. You have done a marvellous job! 3aN8IMa
    cheap flights

  21. cheap flights August 26, 2020

    It’s really a nice and helpful piece of info. I’m glad that you
    shared this helpful info with us. Please keep us up
    to date like this. Thanks for sharing.

  22. cheap flights August 26, 2020

    Pretty nice post. I just stumbled upon your blog and wanted to mention that I have really enjoyed browsing your blog posts.
    After all I will be subscribing in your rss feed and I’m
    hoping you write once more soon!

  23. cheap flights August 28, 2020

    There’s certainly a great deal to find out about this subject.

    I really like all the points you’ve made.

  24. how to hack pokemon go August 29, 2020

    Hello there! I simply wish to give you a big thumbs up for your great information you have got right here
    on this post. I am coming back to your website for more soon.

  25. black mass August 31, 2020

    This is very interesting, You are a very skilled blogger.
    I have joined your rss feed and look forward to seeking more
    of your wonderful post. Also, I have shared your website in my social
    networks!

  26. coin master hack August 31, 2020

    Thanks for one’s marvelous posting! I certainly enjoyed reading it, you
    happen to be a great author. I will be sure to bookmark your blog and may come back very soon. I want to
    encourage that you continue your great job, have
    a nice afternoon!

  27. robux generator August 31, 2020

    Peculiar article, totally what I wanted to find.

  28. free xbox gift card August 31, 2020

    It’s not my first time to go to see this web page, i am visiting this web page dailly and get good information from here everyday.

  29. free psn codes August 31, 2020

    I’m really enjoying the theme/design of your weblog. Do you ever
    run into any browser compatibility problems?
    A number of my blog visitors have complained about my website not operating correctly in Explorer but
    looks great in Safari. Do you have any suggestions to help
    fix this problem?

  30. hack brawl stars August 31, 2020

    I like the helpful info you provide on your articles.

    I’ll bookmark your blog and test again here regularly.
    I’m relatively certain I’ll be told a lot of new stuff proper right here!
    Best of luck for the next!

  31. best website hosting August 31, 2020

    It’s remarkable in favor of me to have a web page, which is helpful in favor
    of my know-how. thanks admin

  32. web hosting company September 5, 2020

    It’s a pity you don’t have a donate button! I’d definitely donate to
    this brilliant blog! I suppose for now i’ll settle
    for book-marking and adding your RSS feed to my Google account.
    I look forward to brand new updates and will share this site with my Facebook group.
    Talk soon!

  33. coin master spins September 6, 2020

    If some one wishes to be updated with newest technologies therefore he must be pay a quick visit this web page
    and be up to date every day.

  34. free coin master September 7, 2020

    Thanks a bunch for sharing this with all folks you actually realize what you’re talking approximately!
    Bookmarked. Please also seek advice from my website =).
    We can have a link trade agreement among us

  35. Hi would you mind stating which blog platform you’re working with?
    I’m going to start my own blog soon but I’m having a tough time making a decision between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your layout seems different then most blogs
    and I’m looking for something unique.
    P.S My apologies for being off-topic but I had to ask!

  36. netflix account generator free September 15, 2020

    Great blog here! Also your website loads up very fast!
    What host are you using? Can I get your affiliate link to your host?
    I wish my website loaded up as fast as yours lol

  37. bingo blitz cheats September 15, 2020

    I have been exploring for a bit for any high quality articles or blog posts on this
    kind of house . Exploring in Yahoo I finally stumbled upon this site.
    Studying this info So i’m satisfied to show that I’ve a very just
    right uncanny feeling I came upon just what I
    needed. I so much indisputably will make sure to do not forget this website and give
    it a glance regularly.

  38. free v bucks September 15, 2020

    I have read several just right stuff here. Certainly worth bookmarking for revisiting.
    I wonder how much attempt you put to create one of these excellent
    informative site.

  39. free v bucks generator September 16, 2020

    Good day! This is my first comment here so I just wanted to give a
    quick shout out and say I really enjoy reading through your posts.

    Can you recommend any other blogs/websites/forums that deal with the same subjects?

    Thank you!

  40. free robux generator September 16, 2020

    I’ve read a few excellent stuff here. Definitely worth bookmarking for revisiting.
    I wonder how a lot attempt you put to create any such magnificent informative website.

  41. roblox free robux September 19, 2020

    I’m not sure where you are getting your info, but good topic.

    I needs to spend some time learning more or understanding
    more. Thanks for excellent info I was looking
    for this info for my mission.

  42. free robux website September 22, 2020

    This article is in fact a nice one it assists new internet visitors, who are wishing for blogging.

  43. excellent points altogether, you simply received a new reader.
    What may you suggest about your publish that you simply made
    some days ago? Any positive?

  44. Nagy Dulas September 23, 2020

    This is a merest nice post. Thankyou for posting this remarkable article.

    xbody dristor bucuresti

  45. Ozgukg September 24, 2020

    The РІvibrationРІ buying cialis online safely that handful is occupied into the drug. generic sildenafil Mszaur xoazad

  46. Hey there! I’ve been reading your blog for a long time now and finally got the
    courage to go ahead and give you a shout out from New Caney Texas!
    Just wanted to say keep up the excellent work!

  47. itunes gift card generator September 25, 2020

    Does your site have a contact page? I’m having a tough
    time locating it but, I’d like to send you an e-mail.
    I’ve got some suggestions for your blog you might be interested in hearing.
    Either way, great blog and I look forward to seeing it expand over time.

  48. fortnite skins generator September 25, 2020

    Hey there just wanted to give you a quick heads up. The words in your
    post seem to be running off the screen in Internet explorer.
    I’m not sure if this is a format issue or something to do with internet
    browser compatibility but I thought I’d post to let you know.
    The design look great though! Hope you get the issue resolved soon. Thanks

  49. free psn codes generator September 25, 2020

    Hi, i think that i saw you visited my weblog so i
    came to “return the favor”.I am attempting to find things
    to improve my website!I suppose its ok to use
    a few of your ideas!!

  50. free vbucks September 25, 2020

    Hi, Neat post. There’s an issue together with your website in web explorer, could test this?

    IE still is the market leader and a large part of other people
    will pass over your excellent writing because of this problem.

  51. coin master free spins September 25, 2020

    I think the admin of this web page is in fact working hard in support of his web site, as here
    every material is quality based information.

  52. free netflix account generator September 25, 2020

    You could certainly see your skills within the work you write.
    The sector hopes for even more passionate writers like you who are not afraid to mention how they believe.
    At all times go after your heart.

  53. free robux September 25, 2020

    Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
    You obviously know what youre talking about, why throw away your intelligence on just posting videos to your site
    when you could be giving us something informative to read?

  54. fortnite account generator September 25, 2020

    Usually I don’t learn article on blogs, however I would like to say that
    this write-up very compelled me to try and do so!
    Your writing style has been amazed me. Thanks, very nice post.

  55. vbucks genetator September 26, 2020

    I got this website from my pal who shared with me regarding this web site and now this time I am browsing this website and reading very informative
    articles or reviews at this time.

  56. free robux generator September 26, 2020

    Thanks a lot for sharing this with all people you actually recognize
    what you are speaking approximately! Bookmarked.
    Kindly also visit my web site =). We will have a link exchange contract between us

  57. free psn codes generator September 26, 2020

    Pretty! This has been an extremely wonderful post. Many thanks for
    supplying these details.

  58. amazon gift card free September 27, 2020

    It’s an remarkable post designed for all the
    internet people; they will get advantage from it I am sure.

  59. Mxxzyq September 28, 2020

    In silicon, it should suffer with also not recommended me that medical. buy viagra Tjjqiu smpgjs

  60. cbd oil washington dc September 28, 2020

    rci5Vt You have remarked very interesting details ! ps decent internet site.

  61. Mrwome September 30, 2020

    Recurrence Iatrogenic with hemolysis and anxiety with the objective of maintaining andor generic cialis online chemist’s shop extensiveness work and guidance thoracic surgeries. http://ciatadforme.com Lsovwm skfpjr

  62. Tattoo September 30, 2020

    Superb weblog here! Also your web site loads up quick! What host are you utilizing? Can I get your affiliate link to your host? I wish my internet site loaded up as rapidly as yours lol

  63. leer noticia September 30, 2020

    JD Oganis Robust Media Theme for Drupal

  64. find mexico swingers club September 30, 2020

    There is definately a lot to learn about this issue. I like all of the points you ave made.

  65. 부커취 September 30, 2020

    Very good information. Lucky me I came across your site by chance (stumbleupon). I ave book-marked it for later!

  66. check October 1, 2020

    Thanks for the article post.Really thank you! Keep writing.

  67. Best Market Reviews October 1, 2020

    magnificent points altogether, you just won a logo new reader. What might you suggest in regards to your submit that you made some days ago? Any sure?

  68. Vtzsyo October 1, 2020

    PT and was shown with an L5S1 herniated deplete. casino slots Gsubrl fpnqej

Leave a Reply

Your email address will not be published.