Nuestra academia “EspañolParaTodos” es una de las academias de español mas importantes del país. Gracias a nuestra metodología y a nuestra gran estrategia comercial hemos conseguido crecer de una forma asombrosa durante los últimos años, contando actualmente con 100 locales distribuidos entre Madrid, Barcelona, Valencia, Sevilla, Mallorca, y el País Vasco.
Debido a que hemos conseguido probar nuestro modelo de negocio y creemos que las posibilidades de crecimiento actuales en el territorio español son limitadas hemos planteado la idea de expandirnos internacionalmente.
Nuestro objetivo actual, y por el cual queremos realizar un estudio, es abrir nuevas academias de español en algún país de Europa.
Dentro de nuestra estrategia de expansión, se ha encargado a nuestro equipo analizar la “oportunidad de mercado”, considerando aquellos países europeos en el cual creemos que puede existir una adopción debido al interés de la gente para aprender español. El análisis económico, financiero y comercial será realizado posteriormente por otros equipos.
Para realizar este primer análisis desde el punto de vista de oportunidad de mercado debemos de tener en cuenta que nuestro modelo de negocio se centra principalmente en estudiantes jóvenes, que siguen en edad de cursar estudios. Es decir, tenemos el foco en el rango de edad entre los 5 y 23 años. Esto se debe a que consideramos que la reticencia de estos clientes suele ser mayor, principalmente marcado por el mayor tiempo del que disponen y que suele estar impuesto por sus padres.
Dentro de esta estrategia hemos considerado responder a la pregunta de ¿Existe alguna oportunidad de expansión en Europa? ¿En qué países las probabilidades de éxito son mayores? Para ello analizaremos dos tipos de datos:
A continuación trataremos de responder esta pregunta con esos datos y explicaremos los motivos por los que hemos elegido dichos datos. Primero analizaremos el nivel de conocimiento en idiomas de los alumnos europeos.
Sin duda, el inglés es el idioma que actualmente cuenta con un mayor número de ciudadanos europeos que quieren aprender a hablar ese idioma. Por tanto, aquellos países en los que de media los estudiantes sepan hablar dos idiomas (o cerca a los dos idiomas), probablemente sea su lengua oficial y el inglés, salvo casos particulares como países que tienen dos idiomas oficiales (por ejemplo, Suiza o Luxemburgo).
Por tanto, en esos países en los que los estudiantes hablen dos idiomas (su idioma local, y generalmente, inglés) puede existir una oportunidad para aprender español.
Más aún, por norma general, será más fácil aprender un tercer idioma para aquellos que ya hayan aprendido a hablar otro idioma, a parte de su lengua materna. Por otro lado, países con lenguas latinas (francés, italiano, portugués o español) tendrán más facilidad - y probablemente disposición – para aprender español.
Busquemos que los datos con los que podemos trabajar y hagamos un análisis sobre ellos.
Lo primero es instalar aquellas librerías que probablemente necesitemos para trabajar con los datos. Entre ellas debemos instalar rmarkdown
# Instalamos el paquete en caso de no estar ya instalado.
if(!is.element("rmarkdown", installed.packages()[, 1]))
install.packages("rmarkdown", repos = 'http://cran.us.r-project.org')
# Cargamos la librería
library(rmarkdown)
Instalamos otras librerías nos pueden ser necesarias para ejecutar el código.
# Instalamos las librerías shiny y httpuv
if(!is.element("shiny", installed.packages()[, 1]))
install.packages("shiny", repos = 'http://cran.us.r-project.org')
if(!is.element("httpuv", installed.packages()[, 1]))
install.packages("httpuv", repos = 'http://cran.us.r-project.org')
Para trabajar con el primer dataset, que nos servirá para conocer el nivel de conocimiento en idiomas de los alumnos en países europeos, debemos instalar una serie de paquetes, como Eurostat que contiene la lista de datasets de la base de datos de Eurostat, o Countrycode que sirve para reconocer el código que se vincula con el país. Para conocer más sobre estos paquetes o librerias podemos ejecutar la función de R “help” o help.search(“…”).
InstallPack <- c("eurostat","ggplot2","countrycode","tidyr","dplyr","knitr")
# Instalamos los paquetes
inst <- match(InstallPack, .packages(all=TRUE))
need <- which(is.na(inst))
if (length(need) > 0) install.packages(InstallPack[need])
# Cargamos los paquetes
lapply(InstallPack, require, character.only=T)
## Loading required package: eurostat
## Loading required package: ggplot2
## Loading required package: countrycode
## Loading required package: tidyr
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: knitr
## [[1]]
## [1] TRUE
##
## [[2]]
## [1] TRUE
##
## [[3]]
## [1] TRUE
##
## [[4]]
## [1] TRUE
##
## [[5]]
## [1] TRUE
##
## [[6]]
## [1] TRUE
Funciones del paquete eurostat
library(eurostat)
knitr::kable(as.data.frame(ls("package:eurostat")))
| ls(“package:eurostat”) |
|---|
| clean_eurostat_cache |
| cut_to_classes |
| dic_order |
| ea_countries |
| efta_countries |
| eu_candidate_countries |
| eu_countries |
| eurostat_geodata_60_2013 |
| eurotime2date |
| eurotime2num |
| get_eurostat |
| get_eurostat_dic |
| get_eurostat_geospatial |
| get_eurostat_json |
| get_eurostat_toc |
| grepEurostatTOC |
| harmonize_country_code |
| label_eurostat |
| label_eurostat_tables |
| label_eurostat_vars |
| search_eurostat |
| tgs00026 |
Podemos ver que incluye un listado de funciones interesantes como el nombre de los países de la Unión Europea, países candidatos a entrar a en la UE o países con acuerdos de libre comercio con la UE. Existen otras funciones como get_eurostat_toc que contiene el conjunto de variables al que se puede acceder mediante Open Data de Eurostat (más de 9.000), o search_eurostat para buscar variables.
Vemos algunas de estas funciones
Paises miembros de la UE
ea_countries
Paises candidatos a entrar en la UE
eu_candidate_countries
Paises EFTA (Asociación Europea de Libre Comercio)
efta_countries
Volviendo a Eurostat. Para bajarnos la tabla de contenidos completa usamos la función get_eurostat_toc(). Viendo el toc veremos que tenemos más de 9.000 variables a las que podemos acceder.
toc <- get_eurostat_toc()
# Mostramos los primeros valores
kable(head(toc))
| title | code | type | last update of data | last table structure change | data start | data end | values |
|---|---|---|---|---|---|---|---|
| Database by themes | data | folder | NA | NA | NA | NA | NA |
| General and regional statistics | general | folder | NA | NA | NA | NA | NA |
| European and national indicators for short-term analysis | euroind | folder | NA | NA | NA | NA | NA |
| Business and consumer surveys (source: DG ECFIN) | ei_bcs | folder | NA | NA | NA | NA | NA |
| Consumer surveys (source: DG ECFIN) | ei_bcs_cs | folder | NA | NA | NA | NA | NA |
| Consumers - monthly data | ei_bsco_m | dataset | 30.07.2018 | 30.07.2018 | 1980M01 | 2018M07 | NA |
Para bajarnos la tabla de contenidos completa usamos la función get_eurostat_toc(). Viendo el toc veremos que tenemos más de 9.000 variables a las que podemos acceder.
toc <- get_eurostat_toc()
# Mostramos los primeros valores
kable(head(toc))
| title | code | type | last update of data | last table structure change | data start | data end | values |
|---|---|---|---|---|---|---|---|
| Database by themes | data | folder | NA | NA | NA | NA | NA |
| General and regional statistics | general | folder | NA | NA | NA | NA | NA |
| European and national indicators for short-term analysis | euroind | folder | NA | NA | NA | NA | NA |
| Business and consumer surveys (source: DG ECFIN) | ei_bcs | folder | NA | NA | NA | NA | NA |
| Consumer surveys (source: DG ECFIN) | ei_bcs_cs | folder | NA | NA | NA | NA | NA |
| Consumers - monthly data | ei_bsco_m | dataset | 30.07.2018 | 30.07.2018 | 1980M01 | 2018M07 | NA |
Con la función search_eurostat() el autor del paquete nos permite buscar variables en el paquete. Veamos algunos ejemplos.
# Datasets referidos a contenidos de educación.
educ <- search_eurostat("education", type = "dataset")
# Veamos los primeros resultados
head(educ)
# Sacamos las primeras 6 filas
kable(head(educ))
| title | code | type | last update of data | last table structure change | data start | data end | values |
|---|---|---|---|---|---|---|---|
| Population by current activity status, educational attainment level and NUTS 2 region | cens_11aed_r2 | dataset | 06.10.2015 | 06.10.2015 | 2011 | 2011 | NA |
| Population by group of country of birth, educational attainment level and NUTS 2 region | cens_11cobe_r2 | dataset | 26.08.2015 | 26.08.2015 | 2011 | 2011 | NA |
| Employed persons by sex, age group, educational attainment level, occupation (ISCO-88) and NUTS 3 regions | cens_01reisco | dataset | 26.03.2009 | 05.11.2014 | 2001 | 2001 | NA |
| Population by sex, age group, educational attainment level, current activity status and NUTS 3 regions | cens_01rews | dataset | 26.03.2009 | 05.11.2014 | 2001 | 2001 | NA |
| Pupils enrolled in early childhood education by sex and NUTS2 regions | educ_uoe_enrp03 | dataset | 20.07.2018 | 29.09.2017 | 2013 | 2016 | NA |
| Pupils enrolled in primary education by sex and NUTS2 regions | educ_uoe_enrp06 | dataset | 20.07.2018 | 29.09.2017 | 2013 | 2016 | NA |
Ahora hagamos un búsqueda referida a idiomas en este caso.
idiomas <- search_eurostat("language", type = "dataset")
# Los primeros resultados
head(idiomas)
# 6 primeras filas
kable(head(idiomas))
| title | code | type | last update of data | last table structure change | data start | data end | values |
|---|---|---|---|---|---|---|---|
| Number of foreign languages known (self-reported) by degree of urbanisation | edat_aes_l26 | dataset | 27.06.2018 | 27.06.2018 | 2007 | 2016 | NA |
| Level of the best-known foreign language (self-reported) by degree of urbanisation | edat_aes_l36 | dataset | 27.06.2018 | 27.06.2018 | 2007 | 2016 | NA |
| Pupils by education level and modern foreign language studied - absolute numbers and % of pupils by language studied | educ_uoe_lang01 | dataset | 11.07.2018 | 28.06.2018 | 2012 | 2016 | NA |
| Pupils by education level and number of modern foreign languages studied - absolute numbers and % of pupils by number of languages studied | educ_uoe_lang02 | dataset | 28.06.2018 | 28.06.2018 | 2012 | 2016 | NA |
| Average number of foreign languages studied per pupil by education level | educ_uoe_lang03 | dataset | 28.06.2018 | 28.06.2018 | 2013 | 2016 | NA |
| Number of foreign languages known (self-reported) by sex | edat_aes_l21 | dataset | 27.06.2018 | 23.04.2018 | 2007 | 2016 | NA |
Un resumen del dataframe idiomas
summary(idiomas)
## title code type
## Length:47 Length:47 Length:47
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
## last update of data last table structure change data start
## Length:47 Length:47 Length:47
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
## data end values
## Length:47 Length:47
## Class :character Class :character
## Mode :character Mode :character
Cargamos los datos que hemos elegido
Para nuestro estudio del numero de idiomas que saben los alumnos de cada país hemos encontrado un dataset que indica precisamente el numero medio de idiomas que hablan los estudiantes en ese país.
En la siguiente dirección se pueden visualizar los datos:
*http://ec.europa.eu/eurostat/tgm/table.do?tab=table&init=1&language=en&pcode=tps00056&plugin=1*
Por tanto, para esta primera parte del análisis y responder a la primera pregunta, elegimos como variable Foreign languages learnt per pupil (Idiomas hablados por los alumnos).
El código de esta variable, que denominamos num_idiomas, es tgs00056.
# Elegimos la variable tgs00056 y pasamos los datos a data frame
num_idiomas <- get_eurostat("tps00056", time_format = "raw")
## Table tps00056 cached at C:\Users\FINNOV~1\AppData\Local\Temp\RtmpGaJZTN/eurostat/tps00056_raw_code_TF.rds
num_idiomas = as.data.frame(num_idiomas)
# Un vistazo
head(num_idiomas)
# Vemos un resumen de los datos del dataframe
summary(num_idiomas)
## indic_ed geo time values
## L02_1:374 BE : 24 Length:699 Min. :0.000
## L02_2:325 BG : 24 Class :character 1st Qu.:1.200
## CY : 24 Mode :character Median :1.500
## CZ : 24 Mean :1.494
## EU27 : 24 3rd Qu.:1.800
## FR : 24 Max. :2.600
## (Other):555 NA's :4
El dataframe se compone de 4 columnas que incluyen dos posibles niveles de educación (indic_ed), el país (geo), año (time), y número de idiomas medios que saben los estudiantes (values).
# Vemos las fechas
table(num_idiomas$time)
##
## 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
## 53 57 58 57 62 59 55 56 57 59 61 65
# Intervalo de tiempo
range(num_idiomas$time, na.rm = TRUE)
## [1] "2001" "2012"
Sigamos analizando los datos, viendo en este caso la clase de las variables
# Clase geo – pais
print("clase_geo")
## [1] "clase_geo"
# Clase time - year
class(num_idiomas$time)
## [1] "character"
# Clase values – numero de idiomas
class(num_idiomas$values)
## [1] "numeric"
Tras consultar los datos de los que disponemos vamos a realizar una limpieza para poder trabajar mejor con ellos y sacar conclusiones de forma mas clara.
Para facilitar la comprensión de los datos vamos a modificar el nombre de las variables.
# Consultamos el nombre actual de las columnas
colnames(num_idiomas)
## [1] "indic_ed" "geo" "time" "values"
# Definimos los nuevos nombres para las columnas
columnas <- c("EducLevel", "Country", "Year", "NumIdiom")
# Creamos un nuevo dataset sobre el que trabajar
num_idiomas_clean = num_idiomas
# Cambiamos el nombre de las variables
colnames(num_idiomas_clean) = columnas
Ahora vamos a hacer una limpieza sobre los valores de la columna de años (Year). Primero pasaremos a valor numerico y despues nos quedaremos con los datos de 2012.
# Pasamos el tiempo a valor numérico (para facilitar el uso de funciones de
# dibujo)
num_idiomas_clean$Year <- eurotime2num(num_idiomas_clean$Year)
# Nos quedamos con datos del año 2012
num_idiomas_clean <- num_idiomas_clean[num_idiomas_clean$Year ==2012, ]
Ahora nos quedemos solo con el nivel 1 de educación, teniendo un dato por país.
num_idiomas_clean$Year[num_idiomas_clean$EducLevel == "L02_1"]
## [1] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
## [15] 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012
## [29] 2012 2012 2012 2012 2012 2012
num_idiomas_clean <- num_idiomas_clean[grepl("^L02_1", num_idiomas_clean$EducLevel),]
head(num_idiomas_clean)
table(num_idiomas_clean$EducLevel, useNA = 'ifany')
##
## L02_1 L02_2
## 34 0
summary(num_idiomas_clean)
## EducLevel Country Year NumIdiom
## L02_1:34 BE : 1 Min. :2012 Min. :1.000
## L02_2: 0 BG : 1 1st Qu.:2012 1st Qu.:1.425
## CY : 1 Median :2012 Median :1.700
## CZ : 1 Mean :2012 Mean :1.685
## DE : 1 3rd Qu.:2012 3rd Qu.:2.000
## EE : 1 Max. :2012 Max. :2.500
## (Other):28
Tras haber limpiado los datos y habernos quedado con los que nos interesa, podemos sacar algunas conclusiones generales sobre el numero de idiomas que saben los estudiante en los paises de Europa a fecha de 2012:
# Veamos cuantas observaciones hemos eliminado tras la limpieza de datos
nrow(num_idiomas) - nrow(num_idiomas_clean)
## [1] 665
Para poder entender mejor a que pais corresponde cada valor, vamos a sustituir el codigo del pais por su nombre real mediante la funcion “countrycode”.
library(countrycode)
num_idiomas_clean$Country <- countrycode(num_idiomas_clean$Country, "iso2c", "country.name")
## Warning in countrycode(num_idiomas_clean$Country, "iso2c", "country.name"): Some values were not matched unambiguously: EL, EU27, EU28
head(num_idiomas_clean)
Asi vemos como el codigo AT corresponde a Austria, o BE a Belgica.
Mediante la funcion tolower(num_idiomas_order$Country) podriamos pasar a minusculas todas las letras de los paises, aunque en este caso no lo consideramos necesario.
Para poder tener los datos ordenados por los paises cuyos estudiantes saben mas idiomas vamos a ordenar el dataframe.
num_idiomas_order = num_idiomas_clean[with(num_idiomas_clean, order(num_idiomas_clean$NumIdiom)), ]
num_idiomas_order
Los paises que aparecen con “NA” corresponden al conjunto de 28 paises y 27 de la UE, y los 18 de la zona euro.
Viendo los resultados de la tabla hay un total de 11 paises cuyos estudiantes de media saben dos idiomas (su idioma oficial mas otro). Otras conclusiones:
España se encuentra a la cola en cuanto al nivel de idiomas que aprenden los alumnos.
Hemos decidido centranos en aquellos paises en los cuales los estudiantes al menos saben dos idiomas (generalmente su idioma oficial y el ingles) debido a la mayor facilidad de los estudiantes por aprender un nuevo idioma que no sea el ingles. Estos paises seran los candidatos para abrir nuevos locales de nuestra academia en nuestra estrategia de expansion internacional.
PaisesCandidatos = num_idiomas_order[which(num_idiomas_order[,4]>1.9),]
PaisesCandidatos
barplot(PaisesCandidatos$NumIdiom, names.arg=PaisesCandidatos$Country, las=2, cex.lab=0.1, col=c("blue"), main = "Paises Candidatos")
# Citamos la fuente Eurostat
citation("eurostat")
##
## Kindly cite the eurostat R package as follows:
##
## (C) Leo Lahti, Janne Huovari, Markus Kainu, Przemyslaw Biecek.
## Retrieval and analysis of Eurostat open data with the eurostat
## package. R Journal 9(1):385-392, 2017. Version 3.2.2 Package
## URL: http://ropengov.github.io/eurostat Manuscript URL:
## https://journal.r-project.org/archive/2017/RJ-2017-019/index.html
##
## A BibTeX entry for LaTeX users is
##
## @Misc{,
## title = {eurostat R package},
## author = {Leo Lahti and Janne Huovari and Markus Kainu and Przemyslaw Biecek},
## journal = {R Journal},
## volume = {9},
## number = {1},
## pages = {385-392},
## year = {2017},
## url = {https://journal.r-project.org/archive/2017/RJ-2017-019/index.html},
## note = {Version 3.2.2},
## }
Pasamos a la segunda parte del análisis.
En esta parte del análisis queremos conocer el número de españoles residentes en los países europeos candidatos.
El objetivo de conocer estos datos es saber en países existen un número aceptable de españoles, pues nos servirá de indicador del nivel de influencia que podrá tener el idioma español en los ciudadanos del país residente, la posible cercanía de los españoles con los ciudadanos de ese país, y la posibilidad de contratar profesores nativos en lugar de tener que trasladar profesores españoles a la zona, suponiendo un mayor coste.
Al igual que con el análisis de la pregunta previa sobre el número de idiomas hablados por los estudiantes, en este caso al no disponer de datos internos tendremos que utilizar fuentes de datos externas.
Para este caso podremos trabajar con datos obtenidos del INE (Instituto Nacional de Estadística) que cuenta en su web con varias fuentes de información. Concretamente haremos una extracción, limpieza y carga del dataset “Población española residente en el extranjero. Población por país de residencia, sexo y grupos de edad (# 01001)”.
Teniendo esto en cuenta, vamos a bajarnos algunos datos. En primer lugar necesitamos descargar una librería para poder leer ficheros pxR.
# Instalamos la librería pxR para poder trabajar con los ficheros del INE de
# formsto .px
if(!is.element("pxR", installed.packages()[, 1]))
install.packages("pxR", repos = 'http://cran.us.r-project.org')
library(pxR)
## Loading required package: stringr
## Loading required package: reshape2
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
## Loading required package: RJSONIO
## Loading required package: plyr
## -------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## -------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
Buscamos en nuestro ordenador los subdirectorios varios y data, si no existen los creamos. Si los subdirectorios no existen, al intentar grabar aparecerá un mensaje de error.
if(!file.exists("varios")){dir.create("varios")}
if(!file.exists("data")){dir.create("data")}
Bajamos los datos que nos interesan para este caso: Población española residente en el extranjero (Población por país de residencia, sexo y grupos de edad).
# 01001. Población española residente en el extranjero. Población por país de residencia, sexo y grupos de edad
fileUrl <- "http://www.ine.es/jaxi/files/_px/es/px/t20/p85001/serie/l0/01001.px?nocab=1"
download.file(fileUrl, destfile="./varios/01001.px")
# Guardamos la fecha en la accedimos a los ficheros
date_downloaded <- date()
Ya tenemos descargado el ficheros en el directorio, ahora empezamos a trabajar con ellos.
# Población española residente en el extranjero. Población por país de residencia, sexo y grupos de edad - 01001.px
ine_poblacion <- read.px("./varios/01001.px")
# Un resumen
summary(ine_poblacion)
##
## Summary of metadata:
## List of 18
## $ AXIS.VERSION :List of 1
## ..$ value: chr "2006"
## $ CHARSET :List of 1
## ..$ value: chr "ANSI"
## $ CODEPAGE :List of 1
## ..$ value: chr "iso-8859-15"
## $ CONTENTS :List of 1
## ..$ value: chr "Población Española residente en el extranjero"
## $ COPYRIGHT :List of 1
## ..$ value: chr "YES"
## $ CREATION.DATE:List of 1
## ..$ value: chr "20180321"
## $ DECIMALS :List of 1
## ..$ value: chr "0"
## $ DESCRIPTION :List of 1
## ..$ value: chr ""
## $ HEADING :List of 1
## ..$ value: chr [1:2] "Sexo" "año"
## $ MATRIX :List of 1
## ..$ value: chr "01001"
## $ SHOWDECIMALS :List of 1
## ..$ value: chr "0"
## $ SOURCE :List of 1
## ..$ value: chr "Instituto Nacional de Estadística"
## $ STUB :List of 1
## ..$ value: chr "País.de.residencia"
## $ SUBJECT.AREA :List of 1
## ..$ value: chr "Principales resultados"
## $ SUBJECT.CODE :List of 1
## ..$ value: chr "null"
## $ TITLE :List of 1
## ..$ value: chr "Población Española residente en el extranjero por país de residencia, sexo y año de referencia"
## $ UNITS :List of 1
## ..$ value: chr "personas (valores absolutos)"
## $ VALUES :List of 3
## ..$ País.de.residencia: chr [1:195] "1. TOTAL PAÍSES (TODOS LOS CONTINENTES)" "2. TOTAL EUROPA" "ALBANIA" "ALEMANIA" ...
## ..$ Sexo : chr [1:3] "Ambos sexos" "Hombres" "Mujeres"
## ..$ año : chr [1:10] "2018" "2017" "2016" "2015" ...
##
## Summary of data:
## 'data.frame': 5850 obs. of 4 variables:
## $ año : Factor w/ 10 levels "2018","2017",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ Sexo : Factor w/ 3 levels "Ambos sexos",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ País.de.residencia: Factor w/ 195 levels "1. TOTAL PAÍSES (TODOS LOS CONTINENTES)",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ value : num 2482808 2406611 2305030 2183043 2058048 ...
En todos los dataset que nos bajamos del INE la variable Contenido nos da que es lo que hay en la variable value, que es la que nos da los datos. En este caso sería población española residente en el extranjero.
En el fichero px, la variable aparece como contents, y hay una primera parte de metadatos con estructura de lista. La variable que hemos bajado es:
ine_poblacion$CONTENTS
## $value
## [1] "Población Española residente en el extranjero"
Como vemos, el contenido del dataset es “Población Española residente en el extranjero”.
Hagamos un summary de la variable “VALUES” que parece contener datos sobre la cantidad de países, número de años contenidos en el documento y el sexo de la persona con nacionalidad española viviendo en el extranjero.
summary(ine_poblacion$VALUES)
## Length Class Mode
## País.de.residencia 195 -none- character
## Sexo 3 -none- character
## año 10 -none- character
Tras haber hecho el summary vemos que el fichero contiene datos de gente que vive en el extranjero en 195 posibles países para una franja de 10 años, desglosandolo por sexo. Si hacemos un head(ine_poblacion$VALUES) podemos ver los 195 “paises”. Las dos primeras filas hacen referencia a la suma total “Todos Países” y a “Total Europa”.
head(ine_poblacion$VALUES)
## $País.de.residencia
## [1] "1. TOTAL PAÍSES (TODOS LOS CONTINENTES)"
## [2] "2. TOTAL EUROPA"
## [3] "ALBANIA"
## [4] "ALEMANIA"
## [5] "ANDORRA"
## [6] "ARMENIA"
## [7] "AUSTRIA"
## [8] "BELARÚS"
## [9] "BÉLGICA"
## [10] "BOSNIA Y HERZEGOVINA"
## [11] "BULGARIA"
## [12] "CHIPRE"
## [13] "CROACIA"
## [14] "DINAMARCA"
## [15] "ESLOVENIA"
## [16] "ESTONIA"
## [17] "FINLANDIA"
## [18] "FRANCIA"
## [19] "GEORGIA"
## [20] "GRECIA"
## [21] "HUNGRÍA"
## [22] "IRLANDA"
## [23] "ISLANDIA"
## [24] "ITALIA"
## [25] "LETONIA"
## [26] "LIECHTENSTEIN"
## [27] "LITUANIA"
## [28] "LUXEMBURGO"
## [29] "MACEDONIA"
## [30] "MALTA"
## [31] "MOLDAVIA"
## [32] "MÓNACO"
## [33] "MONTENEGRO"
## [34] "NORUEGA"
## [35] "PAÍSES BAJOS"
## [36] "POLONIA"
## [37] "PORTUGAL"
## [38] "REINO UNIDO"
## [39] "REPÚBLICA CHECA"
## [40] "REPÚBLICA ESLOVACA"
## [41] "RUMANÍA"
## [42] "RUSIA"
## [43] "SAN MARINO"
## [44] "SANTA SEDE"
## [45] "SERBIA"
## [46] "SUECIA"
## [47] "SUIZA"
## [48] "UCRANIA"
## [49] "3. TOTAL ÁFRICA"
## [50] "ANGOLA"
## [51] "ARGELIA"
## [52] "BENIN"
## [53] "BOTSWANA"
## [54] "BURKINA FASO"
## [55] "BURUNDI"
## [56] "CABO VERDE"
## [57] "CAMERÚN"
## [58] "CHAD"
## [59] "CONGO"
## [60] "COSTA DE MARFIL"
## [61] "DJIBOUTI"
## [62] "EGIPTO"
## [63] "ERITREA"
## [64] "ETIOPÍA"
## [65] "GABÓN"
## [66] "GAMBIA"
## [67] "GHANA"
## [68] "GUINEA"
## [69] "GUINEA ECUATORIAL"
## [70] "GUINEA-BISSAU"
## [71] "KENIA"
## [72] "LESOTHO"
## [73] "LIBERIA"
## [74] "LIBIA"
## [75] "MADAGASCAR"
## [76] "MALAWI"
## [77] "MALI"
## [78] "MARRUECOS"
## [79] "MAURICIO"
## [80] "MAURITANIA"
## [81] "MOZAMBIQUE"
## [82] "NAMIBIA"
## [83] "NÍGER"
## [84] "NIGERIA"
## [85] "REPÚBLICA CENTROAFRICANA"
## [86] "REPÚBLICA DEMOCRÁTICA DEL CONGO"
## [87] "RUANDA"
## [88] "SANTO TOMÉ Y PRÍNCIPE"
## [89] "SENEGAL"
## [90] "SEYCHELLES"
## [91] "SIERRA LEONA"
## [92] "SOMALIA"
## [93] "SUDÁFRICA"
## [94] "SUDÁN"
## [95] "SUDÁN DEL SUR"
## [96] "SWAZILANDIA"
## [97] "TANZANIA"
## [98] "TOGO"
## [99] "TÚNEZ"
## [100] "UGANDA"
## [101] "ZAMBIA"
## [102] "ZIMBABWE"
## [103] "4. TOTAL AMÉRICA"
## [104] "ANTIGUA Y BARBUDA"
## [105] "ARGENTINA"
## [106] "BAHAMAS"
## [107] "BARBADOS"
## [108] "BELICE"
## [109] "BOLIVIA"
## [110] "BRASIL"
## [111] "CANADÁ"
## [112] "CHILE"
## [113] "COLOMBIA"
## [114] "COSTA RICA"
## [115] "CUBA"
## [116] "ECUADOR"
## [117] "EL SALVADOR"
## [118] "ESTADOS UNIDOS DE AMÉRICA"
## [119] "GRANADA"
## [120] "GUATEMALA"
## [121] "GUYANA"
## [122] "HAITÍ"
## [123] "HONDURAS"
## [124] "JAMAICA"
## [125] "MÉXICO"
## [126] "NICARAGUA"
## [127] "PANAMÁ"
## [128] "PARAGUAY"
## [129] "PERÚ"
## [130] "REPÚBLICA DOMINICANA"
## [131] "SAN CRISTÓBAL Y NIEVES"
## [132] "SAN VICENTE Y LAS GRANADINAS"
## [133] "SANTA LUCÍA"
## [134] "SURINAM"
## [135] "TRINIDAD Y TOBAGO"
## [136] "URUGUAY"
## [137] "VENEZUELA"
## [138] "5. TOTAL ASIA"
## [139] "AFGANISTÁN"
## [140] "ARABIA SAUDÍ"
## [141] "AZERBAIYÁN"
## [142] "BAHRÉIN"
## [143] "BANGLADESH"
## [144] "BRUNEI"
## [145] "CAMBOYA"
## [146] "CHINA"
## [147] "COREA"
## [148] "COREA DEL NORTE"
## [149] "EMIRATOS ÁRABES UNIDOS"
## [150] "FILIPINAS"
## [151] "INDIA"
## [152] "INDONESIA"
## [153] "IRÁN"
## [154] "IRAQ"
## [155] "ISRAEL"
## [156] "JAPÓN"
## [157] "JORDANIA"
## [158] "KAZAJSTÁN"
## [159] "KIRGUISTÁN"
## [160] "KUWAIT"
## [161] "LAOS"
## [162] "LÍBANO"
## [163] "MALASIA"
## [164] "MALDIVAS"
## [165] "MONGOLIA"
## [166] "MYANMAR"
## [167] "NEPAL"
## [168] "OMÁN"
## [169] "OTROS PAÍSES DE ASIA"
## [170] "PAKISTÁN"
## [171] "PALESTINA. ESTADO OBSERVADOR, NO MIEMBRO DE NACIONES UNIDAS"
## [172] "QATAR"
## [173] "SINGAPUR"
## [174] "SIRIA"
## [175] "SRI LANKA"
## [176] "TAILANDIA"
## [177] "TAIWAN"
## [178] "TAYIKISTÁN"
## [179] "TURKMENISTÁN"
## [180] "TURQUÍA"
## [181] "UZBEKISTÁN"
## [182] "VIETNAM"
## [183] "YEMEN"
## [184] "6. TOTAL OCEANÍA"
## [185] "AUSTRALIA"
## [186] "FIJI"
## [187] "ISLAS COOK"
## [188] "ISLAS SALOMÓN"
## [189] "MICRONESIA"
## [190] "NUEVA ZELANDA"
## [191] "PALAOS"
## [192] "PAPÚA NUEVA GUINEA"
## [193] "SAMOA"
## [194] "TIMOR ORIENTAL"
## [195] "VANUATU"
##
## $Sexo
## [1] "Ambos sexos" "Hombres" "Mujeres"
##
## $año
## [1] "2018" "2017" "2016" "2015" "2014" "2013" "2012" "2011" "2010" "2009"
Este fichero, una vez hagamos la limpieza y analicemos los datos nos podrá ayudar a tomar nuestra decisión futura si interpretamos correctamente los datos.
Para poder trabajar bien con R vamos a convertir los datos en un data.frame.
# Creamos un data frame con nombre ine_poblaciondf con los datos
ine_poblaciondf <- as.data.frame(ine_poblacion)
# Renombramos la variable contents
names(ine_poblaciondf)[length(ine_poblaciondf)] <- ine_poblacion$CONTENTS
# Vemos el summary
summary(ine_poblaciondf)
## año Sexo
## 2018 : 585 Ambos sexos:1950
## 2017 : 585 Hombres :1950
## 2016 : 585 Mujeres :1950
## 2015 : 585
## 2014 : 585
## 2013 : 585
## (Other):2340
## País.de.residencia
## 1. TOTAL PAÍSES (TODOS LOS CONTINENTES): 30
## 2. TOTAL EUROPA : 30
## ALBANIA : 30
## ALEMANIA : 30
## ANDORRA : 30
## ARMENIA : 30
## (Other) :5670
## Población Española residente en el extranjero
## Min. : 1
## 1st Qu.: 17
## Median : 128
## Mean : 22233
## 3rd Qu.: 1574
## Max. :2482808
## NA's :471
Vemos algunas tablas para este último dataset
# Paises de residencia de españoles en el extranjero
table(ine_poblaciondf$País.de.residencia, useNA = 'ifany')
##
## 1. TOTAL PAÍSES (TODOS LOS CONTINENTES)
## 30
## 2. TOTAL EUROPA
## 30
## ALBANIA
## 30
## ALEMANIA
## 30
## ANDORRA
## 30
## ARMENIA
## 30
## AUSTRIA
## 30
## BELARÚS
## 30
## BÉLGICA
## 30
## BOSNIA Y HERZEGOVINA
## 30
## BULGARIA
## 30
## CHIPRE
## 30
## CROACIA
## 30
## DINAMARCA
## 30
## ESLOVENIA
## 30
## ESTONIA
## 30
## FINLANDIA
## 30
## FRANCIA
## 30
## GEORGIA
## 30
## GRECIA
## 30
## HUNGRÍA
## 30
## IRLANDA
## 30
## ISLANDIA
## 30
## ITALIA
## 30
## LETONIA
## 30
## LIECHTENSTEIN
## 30
## LITUANIA
## 30
## LUXEMBURGO
## 30
## MACEDONIA
## 30
## MALTA
## 30
## MOLDAVIA
## 30
## MÓNACO
## 30
## MONTENEGRO
## 30
## NORUEGA
## 30
## PAÍSES BAJOS
## 30
## POLONIA
## 30
## PORTUGAL
## 30
## REINO UNIDO
## 30
## REPÚBLICA CHECA
## 30
## REPÚBLICA ESLOVACA
## 30
## RUMANÍA
## 30
## RUSIA
## 30
## SAN MARINO
## 30
## SANTA SEDE
## 30
## SERBIA
## 30
## SUECIA
## 30
## SUIZA
## 30
## UCRANIA
## 30
## 3. TOTAL ÁFRICA
## 30
## ANGOLA
## 30
## ARGELIA
## 30
## BENIN
## 30
## BOTSWANA
## 30
## BURKINA FASO
## 30
## BURUNDI
## 30
## CABO VERDE
## 30
## CAMERÚN
## 30
## CHAD
## 30
## CONGO
## 30
## COSTA DE MARFIL
## 30
## DJIBOUTI
## 30
## EGIPTO
## 30
## ERITREA
## 30
## ETIOPÍA
## 30
## GABÓN
## 30
## GAMBIA
## 30
## GHANA
## 30
## GUINEA
## 30
## GUINEA ECUATORIAL
## 30
## GUINEA-BISSAU
## 30
## KENIA
## 30
## LESOTHO
## 30
## LIBERIA
## 30
## LIBIA
## 30
## MADAGASCAR
## 30
## MALAWI
## 30
## MALI
## 30
## MARRUECOS
## 30
## MAURICIO
## 30
## MAURITANIA
## 30
## MOZAMBIQUE
## 30
## NAMIBIA
## 30
## NÍGER
## 30
## NIGERIA
## 30
## REPÚBLICA CENTROAFRICANA
## 30
## REPÚBLICA DEMOCRÁTICA DEL CONGO
## 30
## RUANDA
## 30
## SANTO TOMÉ Y PRÍNCIPE
## 30
## SENEGAL
## 30
## SEYCHELLES
## 30
## SIERRA LEONA
## 30
## SOMALIA
## 30
## SUDÁFRICA
## 30
## SUDÁN
## 30
## SUDÁN DEL SUR
## 30
## SWAZILANDIA
## 30
## TANZANIA
## 30
## TOGO
## 30
## TÚNEZ
## 30
## UGANDA
## 30
## ZAMBIA
## 30
## ZIMBABWE
## 30
## 4. TOTAL AMÉRICA
## 30
## ANTIGUA Y BARBUDA
## 30
## ARGENTINA
## 30
## BAHAMAS
## 30
## BARBADOS
## 30
## BELICE
## 30
## BOLIVIA
## 30
## BRASIL
## 30
## CANADÁ
## 30
## CHILE
## 30
## COLOMBIA
## 30
## COSTA RICA
## 30
## CUBA
## 30
## ECUADOR
## 30
## EL SALVADOR
## 30
## ESTADOS UNIDOS DE AMÉRICA
## 30
## GRANADA
## 30
## GUATEMALA
## 30
## GUYANA
## 30
## HAITÍ
## 30
## HONDURAS
## 30
## JAMAICA
## 30
## MÉXICO
## 30
## NICARAGUA
## 30
## PANAMÁ
## 30
## PARAGUAY
## 30
## PERÚ
## 30
## REPÚBLICA DOMINICANA
## 30
## SAN CRISTÓBAL Y NIEVES
## 30
## SAN VICENTE Y LAS GRANADINAS
## 30
## SANTA LUCÍA
## 30
## SURINAM
## 30
## TRINIDAD Y TOBAGO
## 30
## URUGUAY
## 30
## VENEZUELA
## 30
## 5. TOTAL ASIA
## 30
## AFGANISTÁN
## 30
## ARABIA SAUDÍ
## 30
## AZERBAIYÁN
## 30
## BAHRÉIN
## 30
## BANGLADESH
## 30
## BRUNEI
## 30
## CAMBOYA
## 30
## CHINA
## 30
## COREA
## 30
## COREA DEL NORTE
## 30
## EMIRATOS ÁRABES UNIDOS
## 30
## FILIPINAS
## 30
## INDIA
## 30
## INDONESIA
## 30
## IRÁN
## 30
## IRAQ
## 30
## ISRAEL
## 30
## JAPÓN
## 30
## JORDANIA
## 30
## KAZAJSTÁN
## 30
## KIRGUISTÁN
## 30
## KUWAIT
## 30
## LAOS
## 30
## LÍBANO
## 30
## MALASIA
## 30
## MALDIVAS
## 30
## MONGOLIA
## 30
## MYANMAR
## 30
## NEPAL
## 30
## OMÁN
## 30
## OTROS PAÍSES DE ASIA
## 30
## PAKISTÁN
## 30
## PALESTINA. ESTADO OBSERVADOR, NO MIEMBRO DE NACIONES UNIDAS
## 30
## QATAR
## 30
## SINGAPUR
## 30
## SIRIA
## 30
## SRI LANKA
## 30
## TAILANDIA
## 30
## TAIWAN
## 30
## TAYIKISTÁN
## 30
## TURKMENISTÁN
## 30
## TURQUÍA
## 30
## UZBEKISTÁN
## 30
## VIETNAM
## 30
## YEMEN
## 30
## 6. TOTAL OCEANÍA
## 30
## AUSTRALIA
## 30
## FIJI
## 30
## ISLAS COOK
## 30
## ISLAS SALOMÓN
## 30
## MICRONESIA
## 30
## NUEVA ZELANDA
## 30
## PALAOS
## 30
## PAPÚA NUEVA GUINEA
## 30
## SAMOA
## 30
## TIMOR ORIENTAL
## 30
## VANUATU
## 30
Esta tabla nos proporciona el numero de veces que se repite el pais. Como se puede observar cada pais se repite 30 veces debido a los distintos años, o categoria de sexo. Tambien se incluyen datos sobre el total de países del dataset o el total de países de Europa.
Veamos a continuacion el nombre de las columnas del dataset, las distintas variables.
# Columnas
colnames(ine_poblaciondf)
## [1] "año"
## [2] "Sexo"
## [3] "País.de.residencia"
## [4] "Población Española residente en el extranjero"
Veamos la dimension del dataset.
dim(ine_poblaciondf)
## [1] 5850 4
# Lo podemos hacer por separado, por columnas y filas.
nrow(ine_poblaciondf)
## [1] 5850
ncol(ine_poblaciondf)
## [1] 4
Tenemos 5850 filas y 4 columnas.
Vamos hacer una limpieza de los datos para poder trabajar mejor con ellos. Primero vamos a cambiar el nombre de las columnas para que quede más limpio.
# Renombramos las variables
nombrescolum = c("Year", "Sexo", "Pais", "PoblacionEsp")
names(ine_poblaciondf) = nombrescolum
# Comprobamos
names(ine_poblaciondf)
## [1] "Year" "Sexo" "Pais" "PoblacionEsp"
Veamos el rango de fechas de nuestro dataset. Primero haremos una limpieza de la variable Year pues se trata de un factor.
ine_poblaciondf$Year = as.character(ine_poblaciondf$Year)
#Clase de la variable Year
class(ine_poblaciondf$Year)
## [1] "character"
# A continuación el rango de las fechas.
min(ine_poblaciondf$Year, na.rm = TRUE)
## [1] "2009"
max(ine_poblaciondf$Year, na.rm = TRUE)
## [1] "2018"
# Se puede obtener lo mismo con la función range()
range(ine_poblaciondf$Year, na.rm = TRUE)
## [1] "2009" "2018"
Como podemos ver, los primeros datos del dataset corresponden a 2009 y los ultimos a 2018. En este caso nos interesan los datos de 2018, pues queremos saber la situacion mas reciente. Primero vamos a hacer una busqueda para los datos que corresponden solo a 2018, y mas tarde haremos una limpieza para quedarnos en el dataset solo con estos datos.
summary(ine_poblaciondf[grepl("^2018", ine_poblaciondf$Year),])
## Year Sexo
## Length:585 Ambos sexos:195
## Class :character Hombres :195
## Mode :character Mujeres :195
##
##
##
##
## Pais PoblacionEsp
## 1. TOTAL PAÍSES (TODOS LOS CONTINENTES): 3 Min. : 1
## 2. TOTAL EUROPA : 3 1st Qu.: 16
## ALBANIA : 3 Median : 154
## ALEMANIA : 3 Mean : 26602
## ANDORRA : 3 3rd Qu.: 2118
## ARMENIA : 3 Max. :2482808
## (Other) :567 NA's :25
Ahora vamos a hacer lo mismo pero para quitar la diferenciacion entre sexo masculino y femenino. Repetimos el proceso.
summary(ine_poblaciondf[grepl("^Ambos sexos", ine_poblaciondf$Sexo),])
## Year Sexo
## Length:1950 Ambos sexos:1950
## Class :character Hombres : 0
## Mode :character Mujeres : 0
##
##
##
##
## Pais PoblacionEsp
## 1. TOTAL PAÍSES (TODOS LOS CONTINENTES): 10 Min. : 1.0
## 2. TOTAL EUROPA : 10 1st Qu.: 25.0
## ALBANIA : 10 Median : 200.5
## ALEMANIA : 10 Mean : 32783.2
## ANDORRA : 10 3rd Qu.: 2251.8
## ARMENIA : 10 Max. :2482808.0
## (Other) :1890 NA's :126
Limpiamos el dataset para quedarnos unicamente con los datos de 2018 y unicamente con Ambos Sexos. Creamos un dataset que se llame ine_poblaciondf_clean.
library(stringr)
# Buscamos si incluye 2018.
index_2018 <- str_detect(ine_poblaciondf$Year, '2018')
# Nuevo dataset
ine_poblaciondf_clean <- ine_poblaciondf[index_2018, ]
Nos quedamos con “Ambos sexos”.
index_sexo <- str_detect(ine_poblaciondf_clean$Sexo, 'Ambos sexos')
ine_poblaciondf_clean <- ine_poblaciondf_clean [index_sexo, ]
Ahora vamos a ver cuantas observaciones hemos eliminado con esta ultima limpieza de datos. Para ello restamos la dimension del primer dataset (ine_poblaciondf) y el dataset ya con la limpieza (ine_poblaciondf_clean).
dim(ine_poblaciondf) - dim(ine_poblaciondf_clean)
## [1] 5655 0
Un total de 5655 observaciones se han eliminado. Ahora tenemos 195.
Hagamos un summary para ver con que datos nos hemos quedado.
summary(ine_poblaciondf_clean)
## Year Sexo
## Length:195 Ambos sexos:195
## Class :character Hombres : 0
## Mode :character Mujeres : 0
##
##
##
##
## Pais PoblacionEsp
## 1. TOTAL PAÍSES (TODOS LOS CONTINENTES): 1 Min. : 1.0
## 2. TOTAL EUROPA : 1 1st Qu.: 23.2
## ALBANIA : 1 Median : 261.5
## ALEMANIA : 1 Mean : 39202.2
## ANDORRA : 1 3rd Qu.: 2702.0
## ARMENIA : 1 Max. :2482808.0
## (Other) :189 NA's :5
Ahora ya tenemos el dataset con los datos de los españoles que residen en otros paises a inicios de 2018 con un dato por pais, sin diferenciar entre el sexo de la persona.
head(ine_poblaciondf_clean)
Para analizar los datos sobre el numero de personas españolas que viven fuera, calculando el pais con el minimo numero de españoles, el pais con el maximo y la media, tenemos que quitar del dataset el las variables TOTAL PAISES y TOTAL EUROPA.
# Eliminamos Total Paises (Todos los Continentes)
index_Total_Paises <- str_detect(ine_poblaciondf_clean$Pais, '1. TOTAL PAÍSES ')
ine_poblaciondf_clean <- ine_poblaciondf_clean[!index_Total_Paises, ]
# Eliminamos Total Europa
index_Total_Europa <- str_detect(ine_poblaciondf_clean$Pais, '2. TOTAL EUROPA')
ine_poblaciondf_clean <- ine_poblaciondf_clean[!index_Total_Europa, ]
De estos 193 países, la media de españoles que hay en ellos es de 21.826.
A continuacion veremos datos sobre los 11 paises candidatos.
Veamos ahora los datos de los paises en los que estamos interesados Empecemos por Luxemburgo. Veremos primero el numero de españoles en este país.
Luxemburgo = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "LUXEMBURGO"]
Luxemburgo
## [1] 5869
Como vemos el numero de españoles en Luxemburgo es de casi 6000.
Recurriendo al dataset anterior podemos ver los datos desglosados por fecha y por sexo. Como podremos ver desde 2009 el numero de españoles en Luxemburgo no ha parado de crecer.
head(ine_poblaciondf[ine_poblaciondf$Pais=="LUXEMBURGO", ], 25)
Sigamos por Finlandia.
Finlandia = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "FINLANDIA"]
Finlandia
## [1] 2270
Veamos ahora los datos desglosados
head(ine_poblaciondf[ine_poblaciondf$Pais=="FINLANDIA", ], 25)
Sigamos por Holanda.
Holanda = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "PAÍSES BAJOS"]
Holanda
## [1] 26879
Veamos ahora los datos desglosados
head(ine_poblaciondf[ine_poblaciondf$Pais=="PAÍSES BAJOS", ], 25)
Hacemos lo mismo para el resto de los paises candidatos.
Malta = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "MALTA"]
Malta
## [1] 521
Rumania = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "RUMANÍA"]
Rumania
## [1] 534
Macedonia = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "MACEDONIA"]
Macedonia
## [1] 27
Liechtenstein = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "LIECHTENSTEIN"]
Liechtenstein
## [1] 379
Italia = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "ITALIA"]
Italia
## [1] 23815
Islandia = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "ISLANDIA"]
Islandia
## [1] 309
Estonia = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "ESTONIA"]
Estonia
## [1] 164
Chipre = ine_poblaciondf_clean$PoblacionEsp[ine_poblaciondf_clean$Pais == "CHIPRE"]
Chipre
## [1] 261
Veamos los datos de los paises candidatos para poder elegir aquel o aquellos para expandir nuestro negocio.
library(dplyr)
target <- c("LUXEMBURGO", "FINLANDIA", "PAÍSES BAJOS", "MALTA", "RUMANÍA", "MACEDONIA", "LIECHTENSTEIN", "ITALIA", "ISLANDIA", "ESTONIA", "CHIPRE")
PaisesInteres = filter(ine_poblaciondf_clean, ine_poblaciondf_clean$Pais %in% target)
PaisesInteres
Ordenamos por mayor numero de españoles residentes en el pais.
PaisesInteres = PaisesInteres[with(PaisesInteres, order(PaisesInteres$PoblacionEsp)),]
PaisesInteres
barplot(PaisesInteres$PoblacionEsp, names.arg=PaisesInteres$Pais, col=c("blue"), las=2 , cex.names = 0.6, main = "Paises Interes")
Por el nivel de idiomas de los alumnos, el numero de españoles residentes en esos paises y el tamaño del pais, concluimos que los paises finalistas entre los cuales tendremos que decantar la decision de expandir nuestro negocio son Holanda, Italia, Luxemburgo y Finlandia.
# Terminamos la sesión con
sessionInfo()
## R version 3.4.4 (2018-03-15)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 17134)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Spanish_Spain.1252 LC_CTYPE=Spanish_Spain.1252
## [3] LC_MONETARY=Spanish_Spain.1252 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Spain.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] pxR_0.42.2 plyr_1.8.4 RJSONIO_1.3-0
## [4] reshape2_1.4.3 stringr_1.3.1 bindrcpp_0.2.2
## [7] knitr_1.20 dplyr_0.7.6 tidyr_0.8.1
## [10] countrycode_1.00.0 ggplot2_3.0.0 eurostat_3.2.2
## [13] rmarkdown_1.10
##
## loaded via a namespace (and not attached):
## [1] Rcpp_0.12.18 highr_0.7 pillar_1.3.0
## [4] compiler_3.4.4 RColorBrewer_1.1-2 bindr_0.1.1
## [7] class_7.3-14 tools_3.4.4 digest_0.6.15
## [10] gtable_0.2.0 jsonlite_1.5 evaluate_0.11
## [13] tibble_1.4.2 nlme_3.1-131.1 lattice_0.20-35
## [16] pkgconfig_2.0.2 rlang_0.2.1 DBI_1.0.0
## [19] yaml_2.2.0 spData_0.2.9.3 e1071_1.7-0
## [22] withr_2.1.2 httr_1.3.1 hms_0.4.2
## [25] classInt_0.2-3 rprojroot_1.3-2 grid_3.4.4
## [28] tidyselect_0.2.4 glue_1.3.0 sf_0.6-3
## [31] R6_2.2.2 sp_1.3-1 purrr_0.2.5
## [34] readr_1.1.1 magrittr_1.5 scales_1.0.0
## [37] units_0.6-0 backports_1.1.2 htmltools_0.3.6
## [40] assertthat_0.2.0 colorspace_1.3-2 stringi_1.1.7
## [43] lazyeval_0.2.1 munsell_0.5.0 broom_0.5.0
## [46] crayon_1.3.4