Skip to content

R for Journalists

Unlock the power of R

  • What Is R?
  • R for Rob
  • GitHub
  • Twitter
  • Etsy
  • Home
  • 2016
  • October
  • 27
  • Asylum Seekers Are Usually Housed Away from London and the South East (Unless They Are Unaccompanied Children)

Asylum Seekers Are Usually Housed Away from London and the South East (Unless They Are Unaccompanied Children)

Posted on October 27, 2016October 27, 2016 By Rob
See

Walking through what’s left of the heart of the Jungle. The camp ‘Main St’ pic.twitter.com/8tYau41NST

— Gavin Lee (@GavinLeeBBC) October 26, 2016

With the Calais Jungle being broken up and most of the migrants there sent elsewhere in France, it seems a good time to return to the topic of asylum (although there is a difference between asylum and migration).

I say return because I’ve written about asylum before – more specifically how certain towns and cities, mainly in the North of England, Wales and Scotland – take a greater share than other parts of the country.

Much of the row about Calais centres on the age of the people there, especially those coming to Britain. In England, a child is anyone under the age of 18. If children arrive here to claim asylum unaccompanied, they are classed as ‘unaccompanied asylum-seeking children’ and local authorities (councils) have a duty to look after them.

The Home Office has had a deliberate policy for some time now of dispersing asylum seekers away from London and the South East while their applications are considered – something which has rankled with some of the areas like Liverpool tasked with housing them (although a previous Home Office minister said the department had voluntary arrangements with 95 councils for housing asylum seekers).

But the data on unaccompanied asylum-seeking children (UASC) shows different – many of them are staying around the capital.

In this post we’re going to get both datasets and show the disparity between where child and adult asylum seekers go in England.

Let’s take a look at the data:

Both datasets are quite patchy at local authority level. Because it’s personal data, small numbers are anonymised, leading to a confusing picture if you analyse it that closely.

It helps to step back to regional level, which is what we’ll do here.

Here are the asylum and the UASC datasets, cleaned up by me to an extent.

The data goes back to 2003, but we’ll focus on the latest quarter for now.

data <- read.csv("section_95.csv")
str(data)

#isolate latest quarter
latest <- grep("2016 Q2", data$Quarter)
latest <- data[latest, ]

Now it’s time to introduce a new function

(Remember for the list of all useful formulas, check the cheat sheet).

Calling head on our data reveals that there is an asterisk (*) in front of each region, plus the word ‘Total’.

> head(latest)
 Quarter Region Local.Authority Total.supported.under.Section.95
22882 2016 Q2 *Total *Total 37030
22883 2016 Q2 East Midlands *Total East Midlands 2727
22884 2016 Q2 East of England *Total East of England 576
22885 2016 Q2 London *Total London 3470
22886 2016 Q2 North East *Total North East 3235
22887 2016 Q2 North West *Total North West 9015
 In.receipt.of.subsistence..only Dispersed Disbenefited
22882 2663 34367 :
22883 135 2592 :
22884 143 433 :
22885 1386 2084 :
22886 35 3200 :
22887 329 8686 :

That isn’t going to be helpful for when we merge the data later.

The gsub function can do a find and replace on your data

The basic syntax for gsub is as follows:

gsub([to_find],[to_replace],[data])

Here is a basic example, replacing the ‘a’s in the Local Authority column with the ‘@’ symbol:

> latest$Local.Authority <- gsub("a","@",latest$Local.Authority)
> head(latest)
 Quarter Region Local.Authority Total.supported.under.Section.95
1 2016 Q2 *Total *Tot@l 37030
2 2016 Q2 East Midlands *Tot@l E@st Midl@nds 2727
3 2016 Q2 East of England *Tot@l E@st of Engl@nd 576
4 2016 Q2 London *Tot@l London 3470
5 2016 Q2 North East *Tot@l North E@st 3235
6 2016 Q2 North West *Tot@l North West 9015
 In.receipt.of.subsistence..only Dispersed Disbenefited
1 2,663 34,367 :
2 135 2,592 :
3 143 433 :
4 1,386 2,084 :
5 35 3,200 :
6 329 8,686 :

Our case is a bit more complicated because the asterisk is a special character for regex. We’ll need to use two backspaces (\\) to make it clear that we intend to filter using the asterisk itself. We will replace it with a blank (“”).

Note the whitespace after ‘Total’, we want that gone as well:

#replace *Total 
> latest$Local.Authority <- gsub("\\*Total ",
"",latest$Local.Authority)
> head(latest)
 Quarter Region Local.Authority Total.supported.under.Section.95 In.receipt.of.subsistence..only
22882 2016 Q2 *Total *Total 37030 2663
22883 2016 Q2 East Midlands East Midlands 2727 135
22884 2016 Q2 East of England East of England 576 143
22885 2016 Q2 London London 3470 1386
22886 2016 Q2 North East North East 3235 35
22887 2016 Q2 North West North West 9015 329
 Dispersed Disbenefited
22882 34367 :
22883 2592 :
22884 433 :
22885 2084 :
22886 3200 :
22887 8686 :

You can see now we have our cleaned region names.

There is still an asterisk in front of Total because it didn’t precisely match our gsub expression. That’s OK though, we don’t need it.

Let’s bring in our UASC data:

> uasc <- read.csv("UASC.csv")
> uasc
 Area UASC
1 London 1440
2 South East 1350
3 East of England 450
4 West Midlands 370
5 East Midlands 280
6 Yorkshire and The Humber 110
7 North West 100
8 South West 80
9 North East 20

And now let’s merge them together.

(This previous post has a fuller introduction to merge).

merged <- merge(uasc, latest, 
by.x = "Area", by.y = "Local.Authority")
> str(merged)
'data.frame': 9 obs. of 8 variables:
 $ Area : Factor w/ 9 levels "East Midlands",..: 1 2 3 4 5 6 7 8 9
 $ UASC : int 280 450 1440 20 100 1350 80 370 110
 $ Quarter : Factor w/ 1 level "2016 Q2": 1 1 1 1 1 1 1 1 1
 $ Region : Factor w/ 14 levels "*Total","East Midlands",..: 2 3 4 5 6 10 11 13 14
 $ Total.supported.under.Section.95: Factor w/ 121 levels "0","1","10","1049",..: 44 86 61 56 114 80 118 79 73
 $ In.receipt.of.subsistence..only : Factor w/ 60 levels "0","1","1,386",..: 10 11 3 37 34 16 43 22 6
 $ Dispersed : Factor w/ 109 levels "0","1","1,039",..: 29 64 28 44 92 53 102 61 60
 $ Disbenefited : Factor w/ 2 levels ":","z": 1 1 1 1 1 1 1 1 1

Now we need the data for both kinds of asylum seeker in one column

Currently they are in two columns, which is no good for the grouped bar chart we have in mind.

We are going to focus on those asylum seekers and their families housed in accommodation while their claims are processed, i.e. the ‘Dispersed’ column. The data also contains cases of families whose claims were rejected but are supported anyway because they have children. This is something the Home Office wanted to change as of last year because the total cost of supporting these people, not just with accommodation, came to £73m in 2014/15.

Luckily, as before, we can use gather to get both columns of data into one.

library(tidyr)
new_data <- gather(merged, type, value, UASC, 
Dispersed)

#make the values numeric
new_data$value <- as.numeric(new_data$value)

Here we are saying: ‘Create a new data frame. This will be the same as merged, except with two new columns. One column called “type” will show whether the number refers to children or adults/families in dispersed accommodation. The other called ‘value’ will be the numbers.

Now we have our data in the correct format!

#create labels
labelss <- c("E. Mids","East","London","NE",
 "NW","SE","SW","W. Mids","Yorkshire & H.")

ggplot(new_data, aes(x = Area, y = value, fill = type)) 
+ ggtitle("Asylum in England") 
+ labs(x = "Region", y = "Total") 
+ scale_x_discrete(labels = labelss) 
+ geom_bar(stat="identity", position = "dodge") 
+ theme(plot.title = element_text(size = 75),
 axis.text.y = element_text(size = 24),
 axis.text.x = element_text(size = 20),
 axis.title = element_text(size = 38),
 legend.title = element_text(size = 28),
 legend.text = element_text(size = 20),
 legend.position = "right",
 
 #space out the legend keys
 legend.key.size = unit(1.5, 'lines')) 
+ scale_fill_discrete(name ="Region")

Note here: we are using fill = type to create bars based on what type of asylum seeker they are and position = “dodge” to make the bars appear next to each other.

asylum

The graph shows the huge differences in where adults and their families are housed compared to unaccompanied minors.

Adults and families in section 95 support are put away from London and the South East.

The Home Office put the dispersal policy away from London in place because asylum seekers were choosing to stay in or near the capital while their claims were processed and putting pressure on services there. It’s worth noting that the centre for processing claims is in Croydon, south London.

According to Coram Children’s Legal Centre, unaccompanied asylum-seeking children are often processed at the centre in Croydon and then allocated care elsewhere in London.

A curious result of these policies is that there were more unaccompanied asylum-seeking children in the East of England and the South East than there were adults and families, despite the fact there are many more asylum seekers supported under section 95 in housing than there are UASC.

Share this:

  • Click to share on X (Opens in new window) X
  • Click to share on Facebook (Opens in new window) Facebook

Related

Tags: asylum Calais gather ggplot2 gsub merge

Post navigation

❮ Previous Post: R for Journalists Is Now on Google+
Next Post: Seen Elsewhere: 28th October 2016 ❯

Recent Posts

  • I’ve moved my blog over to Substack
  • How to plot a large rural area using Ordnance Survey data in R
  • Check the COVID-19 vaccination progress in your area
  • Let R tell you what to watch on Netflix
  • Sentiment analysis of Nineteen-Eighty-Four: how gloomy is George Orwell’s dystopian novel?

Archives

  • April 2022
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • February 2020
  • December 2019
  • November 2019
  • October 2019
  • April 2018
  • March 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016

Categories

  • Geospatial data
  • Landmark Atlas
  • Learn
  • See
  • Seen Elsewhere
  • Site
  • Uncategorized

Copyright © 2025 R for Journalists.

Theme: Oceanly by ScriptsTown

 

Loading Comments...