Vous êtes sur la page 1sur 51

INTERMEDIATE

IMPORTING DATA
IN R

Description du cours
Dans ce cours, vous plongerez plus profondément dans le large éventail de
formats de données disponibles. Plus précisément, vous apprendrez comment
importer des données à partir de bases de données relationnelles et comment
importer et utiliser des données provenant du Web. Enfin, vous acquerrez une
expérience pratique de l'importation de données à partir de progiciels statistiques
tels que SAS, STATA et SPSS.

1- Importing data from databases (Part 1)


De nombreuses entreprises stockent leurs informations dans des bases de
données relationnelles. La communauté R a également développé des packages
R pour obtenir des données de ces architectures. Vous apprendrez à vous
connecter à une base de données et à en récupérer des données.
Datasets:
https://assets.datacamp.com/production/repositories/454/datasets/
3c295cdad28103efca12907eddda0acb15d2a2b8/potatoes.txt
https://assets.datacamp.com/production/repositories/454/datasets/
0badb39b50c7daf000698efbca476716db7c1a6f/swimming_pools.csv
https://assets.datacamp.com/production/repositories/454/datasets/
c189c407928639e85031c42483743f7edd2d6111/water.csv

Se connecter à une base de données


1. Connectez-vous à une base de données
Bienvenue dans la deuxième partie de l'importation de données dans R !

2. Jusqu'à présent
Le cours précédent traitait de l'accès aux données stockées dans des fichiers
plats ou des fichiers Excel. Dans un cadre professionnel, vous rencontrerez
également des données stockées dans des bases de données relationnelles.

3. Bases de données relationnelles


Dans cette vidéo, je vais brièvement parler de ce qu'est une base de données
relationnelle, puis j'expliquerai comment vous pouvez vous y connecter. Dans la
prochaine vidéo, je vais vous expliquer comment vous pouvez importer des
données à partir de celui-ci ! Alors, qu'est-ce qu'une base de données
relationnelle ? Il n'y a pas de meilleure façon de le montrer qu'avec un exemple.

4. entreprise
Prenez cette base de données, appelée entreprise. Il contient trois tableaux,

5. entreprise
des employés,

6. entreprise
produits et

7. entreprise
Ventes. Comme un fichier plat, les informations sont affichées sous forme de
tableau. La table des employés contient 5 enregistrements et trois champs, à
savoir id, name et start_at. L'identifiant sert ici de clé unique pour chaque ligne
ou enregistrement. Ensuite, le tableau des produits contient les détails de quatre
produits. Nous avons affaire aux données d'une entreprise de
télécommunications qui vend à la fois avec et sans contrat. Ici aussi, chaque
produit a un identifiant. Enfin, il y a la table des ventes. Il répertorie quels
produits ont été vendus par qui, quand et à quel prix. Notez ici que les
identifiants dans

8. entreprise
id_employé et

9. entreprise
product_id correspond aux identifiants que vous pouvez trouver dans la table
des employés et des produits respectivement.

10. entreprise
La troisième vente par exemple, a été faite par l'employé avec l'identifiant 6,
donc Julie. Elle a vendu le produit avec l'identifiant 9, donc le contrat Biz
Unlimited.

11. entreprise
Ces relations rendent cette base de données très puissante. Vous ne stockez
toutes les informations nécessaires qu'une seule fois dans des tableaux bien
séparés, mais vous pouvez relier les points entre différents enregistrements pour
modéliser ce qui se passe.

12. Système de gestion de base de données


La façon dont les données d'une base de données relationnelle sont stockées et
mélangées lorsque vous effectuez des adaptations dépend du système de gestion
de base de données ou du SGBD que vous utilisez. Les implémentations open
source telles que MySQL, postgreSQL et SQLite sont très populaires, mais il
existe également des implémentations propriétaires telles que Oracle Database et
Microsoft SQL Server. Pratiquement toutes ces implémentations utilisent SQL,
ou suite, comme langage d'interrogation et de maintenance de la base de
données. SQL signifie Structured Query Language.

13. Bases de données en R


Selon le type de base de données auquel vous souhaitez vous connecter, vous
devrez utiliser différents packages. Supposons que la base de données
d'entreprise que j'ai introduite précédemment soit une base de données MySQL.
Cela signifie que vous aurez besoin du package RMySQL. Pour postgreSQL,
vous aurez besoin de RpostgreSQL, pour Oracle, vous utiliserez ROracle et ainsi
de suite. La manière dont vous interagissez avec la base de données, ainsi que
les fonctions R que vous utilisez pour accéder et manipuler la base de données,
sont spécifiées dans un autre package R appelé DBI. En termes plus techniques,
DBI est une interface et RMySQL est l'implémentation. Installons le package
RMySQL, qui installe également automatiquement le package DBI. Charger
uniquement le package DBI sera suffisant pour démarrer.

14. Se connecter à la base de données


La première étape consiste à créer une connexion à la base de données MySQL
distante. Pour ce faire, avec dbConnect, comme suit. Le premier argument
spécifie le pilote que vous utiliserez pour vous connecter à la base de données
MySQL. Cela semble un peu étrange, mais la fonction MySQL du package
RMySQL construit simplement un pilote pour nous que dbConnect peut utiliser.
Ensuite, vous devez spécifier le nom de la base de données, où la base de
données est hébergée, via quel port vous souhaitez vous connecter, et enfin les
informations d'identification pour vous authentifier. Il s'agit d'une véritable base
de données que nous hébergeons, vous pouvez donc essayer ces commandes
vous-même ! Le résultat de l'appel dbConnect, con, est un objet de connexion
DBI. Vous devrez passer cet objet à la fonction que vous utilisez pour interagir
avec la base de données.

15. Entraînons-nous !
Avant de faire cela, familiarisons-nous avec cet objet de connexion dans les
exercices !

Établir une connexion


La première étape pour importer des données à partir d'une base de données
SQL consiste à créer une connexion à celle-ci. Comme l'a expliqué Filip, vous
avez besoin de différents packages en fonction de la base de données à laquelle
vous souhaitez vous connecter. Tous ces packages le font de manière uniforme,
comme spécifié dans le DBIpackage.

dbConnect()crée une connexion entre votre session R et une base de données


SQL. Le premier argument doit être un DBIdriverobjet, qui spécifie comment
les connexions sont établies et comment les données sont mappées entre R et la
base de données. Spécifiquement pour les bases de données MySQL, vous
pouvez créer un tel pilote avec RMySQL::MySQL().

Si la base de données MySQL est une base de données distante hébergée sur un
serveur, vous devrez également préciser les arguments suivants dbConnect():
dbname, host, port, useret password. La plupart de ces détails ont déjà été
fournis.
Instructions
Chargez la DBI bibliothèque, qui est déjà installée sur les serveurs de
DataCamp.
Modifiez l' dbConnect() appel pour vous connecter à la base de données
MySQL. Modifiez l' portargument ( 3306) et l' userargument ( "student").

Vous êtes maintenant connecté à la base de données MySQL tweater.

Inspecter la connexion
Maintenant que vous avez créé avec succès la connexion à la base de données,
examinons-la de plus près. Avec l'objet condisponible dans votre espace de
travail, pouvez-vous dire laquelle des affirmations suivantes est vraie ?
Instructions
Des réponses possibles
Con est un MySQLConnection objet.
Importer les données du tableau
1. Importer les données du tableau
Après avoir réussi à vous connecter à une base de données,

2. inconvénient
comme ça, vous voudrez probablement voir ce qu'il y a dedans.

3. Lister et importer des tableaux


La première étape consiste à répertorier toutes les tables de la base de données.
Vous pouvez le faire avec la fonction dbListTables. Passez simplement la
variable con. Comme prévu, nous obtenons un vecteur de caractères de longueur
trois, correspondant aux noms de table que j'ai introduits plus tôt. Ensuite, vous
pouvez choisir de lire réellement les données d'une de ces tables, par exemple de
la table des employés. Vous utilisez la fonction dbReadTable pour cela. Encore
une fois, vous spécifiez la connexion à utiliser, con, mais cette fois vous
spécifiez également les données de table que vous souhaitez importer : Le
résultat est un bloc de données, avec exactement le même contenu que dans la
table de base de données d'origine. DBI spécifie également des fonctions pour
créer de nouvelles tables, stocker de nouvelles données dans des tables et
supprimer des tables, mais ce n'est pas vraiment lié à l'importation de données,
je n'en parlerai donc pas ici. Les fonctions que nous' ve couvert jusqu'à présent
fournissent déjà un assez bon point de départ. Oh non, attends, il y a une
dernière chose ! Il est toujours poli de déconnecter explicitement votre base de
données une fois que vous avez terminé. Pour ce faire, avec dbDisconnect,
comme suit. Si vous essayez maintenant d'imprimer con, vous verrez qu'il n'est
plus disponible. Bon débarras,

4. Entraînons-nous !
place aux exercices maintenant !

Lister les tables de la base de données


Une fois que vous vous êtes connecté avec succès à une base de données
MySQL distante, l'étape suivante consiste à voir quelles tables la base de
données contient. Vous pouvez le faire avec la dbListTables()fonction. Comme
vous vous en souvenez peut-être dans la vidéo, cette fonction nécessite l'objet de
connexion comme entrée et génère un vecteur de caractères avec les noms de
table.
Instructions
Ajoutez du code pour créer un vecteur tablescontenant les tables de la base de
données tweater. Vous pouvez vous connecter à cette base de données via l'
conobjet.
Afficher la structure de tables; quelle est la classe de ce vecteur ?
dbListTables()peut être très utile pour se faire une première idée du contenu de
votre base de données. Pouvez-vous deviner quel type d'informations cette base
de données contient ?

Importer des utilisateurs


Comme vous l'avez peut-être deviné, la base de données contient des données
sur une version plus savoureuse de Twitter, à savoir Tweater. Les utilisateurs
peuvent publier des tweets avec de courtes recettes pour de délicieuses
collations. Les gens peuvent commenter ces tweats. Il existe trois tables : users ,
tweats et comments qui ont des relations entre elles. Lesquelles, demandez-
vous ? Vous découvrirez dans un instant !

Commençons par importer les données sur les utilisateurs dans votre session R.
Vous le faites avec la dbReadTable()fonction. Passez-lui simplement l'objet de
connexion ( con), suivi du nom de la table que vous souhaitez importer. L'objet
résultant est une trame de données R standard.
Instructions
Ajoutez du code qui importe la "users"table à partir de la base de données
tweater et stockez la trame de données résultante au format users.
Imprimez le bloc de users données.

Importer tous les tableaux


À côté du users, nous nous intéressons également aux tableaux tweatset
comments. Cependant, des dbReadTable()appels séparés pour chacune des
tables de votre base de données entraîneraient beaucoup de duplication de code.
Vous vous souvenez de la lapply()fonction ? Vous pouvez l'utiliser à nouveau
ici! Une connexion est déjà codée pour vous, ainsi qu'un vecteur
table_namescontenant les noms de toutes les tables de la base de données.
Instructions
Terminez la lapply()fonction pour importer les tables users, tweatset
commentsen un seul appel. Le résultat, une liste de trames de données, sera
stocké dans la variable tables.
Imprimez tablespour vérifier si vous avez bien compris.
Maintenant que vous disposez d'une version R de toutes les données contenues
dans la base de données, vous pouvez approfondir un peu les relations entre les
différents blocs de données.

Comment les tableaux se rapportent-ils?


La connexion à la base de données MySQL con a déjà été créée pour vous.
tables, une liste contenant les trois tableaux sous forme de blocs de données que
vous avez créés dans l'exercice précédent est également disponible.

Si vous regardez de plus près ces tables, vous verrez que la tweats table, par
exemple, contient une colonne user_id. Les identifiants dans la colonne font
référence aux utilisateurs qui ont posté le tweat. De même, les
commentscontiennent à la fois a user_idet une tweat_idcolonne. Il précise quel
utilisateur a posté un commentaire sur quel tweat.

Avec cette nouvelle connaissance, pouvez-vous dire qui a posté le tweat sur
lequel quelqu'un a commenté "super ! merci !" (commentaire 1012) ?
Instructions
Des réponses possibles
L'utilisateur avec user_id 5, donc Oliver

2- Importation de données à partir de bases de données


(Partie 2)
Importer une table entière à partir d'une base de données alors que vous n'avez
peut-être besoin que d'un tout petit peu d'informations semble être beaucoup de
travail inutile. Dans ce chapitre, vous découvrirez les requêtes SQL, ce qui vous
aidera à rendre les choses plus efficaces en effectuant certains calculs du côté de
la base de données.

Requêtes SQL de l'intérieur de R


1. Requêtes SQL depuis l'intérieur de R
Ainsi, vous êtes déjà familiarisé avec la connexion et l'importation depuis une
base de données.

2. dbLitTable()
Cependant, avec dbReadTable,

3. dbLitTable()
vous importez une table entière. Pour l'exemple d'une entreprise qui avait peu de
données, ce n'est pas un problème, mais que se passe-t-il si vous avez affaire à
une base de données contenant des tables avec des millions d'enregistrements ?
Vous devrez importer l'intégralité du tableau dans R avant de pouvoir effectuer
une analyse qui pourrait n'avoir besoin que d'une fraction de ces données.

4. dbLitTable()
S'il y avait un moyen d'effectuer une grande partie du travail de sélection de
données

5. dbLitTable()
côté base de données,

6. dbLitTable()
vous n'avez qu'à importer les éléments dont vous avez réellement besoin dans R.
Cela a beaucoup plus de sens, n'est-ce pas ?

7. Importation sélective
Je suis heureux de vous dire que c'est possible, tout cela depuis l'intérieur de R !
N'oubliez pas que les bases de données relationnelles utilisent généralement
SQL comme langage d'interrogation ? Eh bien, vous allez écrire des requêtes
SQL pour récupérer des données en fonction de critères spécifiques. Vous
pouvez envoyer ces requêtes via les fonctions R spécifiées par le package DBI et
implémentées par un package R qui dépend de la base de données que vous
utilisez. Comme nous travaillons avec des bases de données MySQL, c'est
RMySQL ici. L'écriture de requêtes SQL est un sujet à part entière, je ne
traiterai donc que quelques exemples de base afin que vous ayez une idée.

8. entreprise
Jetons à nouveau un coup d'œil à la base de données de l'entreprise, qui
contenait des informations sur les ventes de produits de télécommunications
réalisées par différents employés.

9. entreprise
Supposons que nous voulions avoir les noms des employés qui ont commencé
après le premier septembre 2012. Comment s'y prendre ?

10. Chargez le package et connectez-vous


Dans tous les cas, nous devons commencer par charger le package DBI et créer
une connexion à la base de données de l'entreprise. Il s'agit d'une véritable base
de données, vous pouvez donc essayer vous-même le code de cette vidéo !
.

11. Exemple 1
Pour résoudre la tâche à accomplir, vous pouvez lire l'intégralité de la table des
employés, puis la sous-ensemble à l'aide de la fonction de sous-ensemble. Mais
il y a un autre chemin. Jetez un œil à cet appel de la fonction dbGetQuery. Le
résultat est exactement le même. L'étrange syntaxe à l'intérieur de la chaîne ici
est en fait une requête SQL très courante, qui utilise trois mots-clés SQL :
SELECT, FROM et WHERE. Le mot clé SELECT spécifie la colonne à
sélectionner et correspond à l'argument select dans la fonction de sous-
ensemble. Le mot clé FROM spécifie la table à partir de laquelle vous souhaitez
obtenir des données et correspond au premier argument de la fonction de sous-
ensemble. Enfin, le mot clé WHERE spécifie une condition qu'un
enregistrement de la table doit remplir. Si vous lisez cette phrase à voix haute
avec quelques ajouts ici et là, cela semble assez naturel : "Sélectionnez la
colonne name dans la table des employés,
12. Exemple 1
Dans le premier cas,

13. Exemple 1
vous importez toute la table des employés,

14. Exemple 1
puis faites quelques sous-ensembles dans R. Dans le second cas,

15. Exemple 1
vous envoyez une requête SQL à la base de données,

16. Exemple 1
cette requête est exécutée du côté de la base de données, et

17. Exemple 1
seuls les résultats sont importés dans R. Si vous avez affaire à des tables
volumineuses, la deuxième approche est bien plus efficace. Essayons un autre
exemple.

18. entreprise
Supposons que vous vouliez sélectionner les produits qui impliquent un contrat,

19. entreprise
donc où le contrat est un. Pour ces produits, nous nous intéressons à toutes les
variables. L'ancienne approche consistant à lire l'ensemble du tableau puis à
sous-ensemble

20. Exemple 2
ressemblerait à ça. La nouvelle approche consistant à envoyer une requête SQL
à la base de données et à récupérer le résultat ressemble à ceci. Les résultats sont
à nouveau exactement les mêmes. Remarquez comment l'étoile après le mot-clé
SELECT spécifie de conserver toutes les colonnes de la table des produits.
Notez également que dans la requête SQL, vous devez utiliser un seul signe égal
pour spécifier une condition pour le mot clé WHERE, au lieu d'un double signe
égal, comme vous en avez l'habitude dans R.

21. Entraînons-nous !
Après ce cours accéléré sur la syntaxe SQL, voyons comment vous vous
comportez dans certains exercices. Bonne chance!

# Tweer de requête (1)

Tweer de requête (1)


Dans votre vie de data scientist, vous travaillerez souvent avec d'énormes bases
de données qui contiennent des tables avec des millions de lignes. Si vous
souhaitez faire des analyses sur ces données, il est possible que vous n'ayez
besoin que d'une fraction de ces données. Dans ce cas, c'est une bonne idée
d'envoyer des requêtes SQL à votre base de données et d'importer uniquement
les données dont vous avez réellement besoin dans R.

dbGetQuery()est ce dont vous avez besoin. Comme d'habitude, vous lui passez
d'abord l'objet de connexion. Le deuxième argument est une requête SQL sous
forme de chaîne de caractères. Cet exemple sélectionne la agevariable dans l'
peopleensemble de données où genderest égal à"male" :

dbGetQuery(con, "SELECT age FROM people WHERE gender = 'male'")


Une connexion à la tweaterbase de données a déjà été codée pour vous.
Instructions
Utilisez dbGetQuery()pour créer un bloc de données, elisabeth, qui sélectionne
la tweat_idcolonne de la commentstable où elisabeth est le commentateur, elle
user_idest 1
Imprimez elisabethpour voir si vous avez correctement interrogé la base de
données.
Agréable! Pour vous assurer que vous avez compris la syntaxe - SELECT- de
SQL , pratiquons un peu plus. FROM WHERE

Tweer de requête (2)


En plus de vérifier l'égalité, vous pouvez également vérifier les relations
inférieures et supérieures à , avec <et >, tout comme dans R.

con, une connexion à la tweaterbase de données, est à nouveau disponible.


Intructions
Créez un bloc de données, latest, qui sélectionne la postcolonne destweats
observations du tableau où le dateest supérieur à '2015-09-21'.
Imprimez latest.
Pour vous assurer que vous avez compris la syntaxe - SELECT- de SQL ,
pratiquons un peu plus. FROM WHERE

Tweer de requête (3)


Supposons que vous ayez un peopletableau, avec un tas d'informations. Cette
fois, vous voulez découvrir le ageet les countryhommes mariés. À condition
qu'il y ait une marriedcolonne qui est 1 lorsque la personne en question est
mariée, la requête suivante fonctionnerait.

SELECT age, country


FROM people
WHERE gender = "male" AND married = 1
Pouvez-vous utiliser une approche similaire pour une requête plus spécialisée
sur la tweaterbase de données ?
Instructions
Créer une trame de données de R, specific, que sélectionne la messagecolonne
de la commentsTable où le tweat_idest 77 et le user_idest supérieur à 4.
Imprimer specific.

Tweer de requête (4)


Il existe également des fonctions SQL dédiées que vous pouvez utiliser dans la
WHEREclause d'une requête SQL. Par exemple, CHAR_LENGTH()renvoie le
nombre de caractères d'une chaîne.
Instructions
Créez un bloc de données, short, qui sélectionne les colonnes idet de la table où
le nombre de caractères dans est strictement inférieur à 5.nameusersname
Imprimer short.

Rejoignez la folie des requêtes !


Bien sûr, SQL ne s'arrête pas aux trois mots SELECT- clés , FROMet WHERE.
Un autre mot clé très souvent utilisé est JOIN, et plus précisément INNER
JOIN. Prenons cet appel par exemple :

SELECT name, post


FROM users INNER JOIN tweats on users.id = user_id
WHERE date > "2015-09-19"
Ici, la userstable est jointe à la tweatstable. Ceci est possible car la idcolonne du
userstableau correspond à la user_idcolonne du tweatstableau. Notez également
comment name, à partir du userstableau, et postet date, à partir du tweatstableau,
peuvent être référencés sans problème.

Pouvez-vous prédire le résultat de la requête suivante ?

SELECT post, message


FROM tweats INNER JOIN comments on tweats.id = tweat_id
WHERE tweat_id = 77
Une connexion à la tweater base de données est déjà disponible en tant que con;
n'hésitez pas à expérimenter !
Instructions
Des réponses possibles
Un tableau avec quatre observations, contenant deux colonnes : postet message.
Avez-vous essayé d'exécuter cette requête avec dbGetQuery()? Le résultat
contient des données à la fois de la tweatset de la commentscolonne.

Internes DBI
1. Les internes de DBI
Revenons à un appel de fonction dbGetQuery d'avant.

2. dbRequête()
C'était incroyablement facile à utiliser. Passez simplement l'objet de connexion
et une requête SQL, et vous obtenez un résultat. Ce qu'il fait réellement dans les
coulisses, c'est d'envoyer une requête, avec dbSendQuery, comme celle-ci. Cette
fonction renvoie un résultat, mais celui-ci ne contient en fait aucun
enregistrement que vous vouliez importer. Pour cela, vous devez utiliser la
fonction dbFetch. Enfin, vous devez effacer manuellement le résultat. La
combinaison de dbSendQuery, dbFetch et dbClearResult donne exactement le
même résultat que dbGetQuery, alors pourquoi faire cela ? Eh bien, les appels
de requête dbFetch vous permettent de spécifier un nombre maximum
d'enregistrements à récupérer par extraction. Cela peut être utile lorsque vous
devez charger des tonnes d'enregistrements, mais que vous souhaitez le faire
morceau par morceau. Supposons, par exemple,

3. dbFetch() un par un
vous voulez obtenir le résultat de la requête précédente, enregistrement par
enregistrement. Vous pouvez utiliser cette construction pour cela, avec la même
requête SQL que précédemment. Ce code envoie d'abord une requête à la base
de données, puis entre dans une boucle while qui vérifie si le résultat de la
requête contient toujours des données qui n'ont pas encore été récupérées. S'il y
a encore des données disponibles, les morceaux sont récupérés enregistrement
par enregistrement, et ce morceau est imprimé à chaque itération. La sortie
montre en effet les deux enregistrements, imprimés séparément, l'un après
l'autre. Dans cet exemple de jouet, cette approche n'est pas vraiment utile, mais
si vous travaillez sur un algorithme super compliqué qui implique des millions
d'enregistrements de base de données, vous voudrez peut-être envisager un
traitement des données par morceaux, n'est-ce pas ? Après tout votre travail
acharné sur la base de données,

4. Déconnectez-vous
n'oubliez pas de vous en déconnecter. Essayez ces fonctions DBI de bas niveau
dans les exercices.

5. Entraînons-nous !
Dans le prochain chapitre, je reviendrai pour vous en dire plus sur l'importation
de données depuis le Web. On se voit là-bas!

Envoyer - Récupérer - Effacer


Vous avez utilisé dbGetQuery()plusieurs fois maintenant. Il s'agit d'une fonction
virtuelle du DBIpackage, mais elle est en réalité implémentée par le
RMySQLpackage. Dans les coulisses, les étapes suivantes sont effectuées :

Envoi de la requête spécifiée avec dbSendQuery();


Récupérer le résultat de l'exécution de la requête sur la base de données avec
dbFetch();
Effacer le résultat avec dbClearResult().
N'utilisons pas dbGetQuery()ce temps et mettons en œuvre les étapes ci-dessus.
C'est fastidieux à écrire, mais cela vous donne la possibilité de récupérer le
résultat de la requête en morceaux plutôt que d'un seul coup. Vous pouvez le
faire en spécifiant l' nargument à l'intérieur dbFetch().
Instructions
Inspectez l' dbSendQuery()appel qui a déjà été codé pour vous. Il sélectionne les
commentaires pour les utilisateurs avec un identifiant supérieur à 4.
Utiliser dbFetch()deux fois. Lors du premier appel, importez uniquement deux
enregistrements du résultat de la requête en définissant l' nargument sur 2. Dans
le deuxième appel, importez toutes les requêtes restantes (ne spécifiez pas n).
Dans les deux appels, imprimez simplement les trames de données résultantes.
Effacer res avec dbClearResult().

Dans notre exemple de jouet, découper les récupérations n'a pas beaucoup de
sens, mais assurez-vous de vous souvenir de cette technique lorsque vous êtes
aux prises avec d'énormes bases de données !

Soyez poli et...


Chaque fois que vous vous connectez à une base de données à l'aide de
dbConnect(), vous créez une nouvelle connexion à la base de données que vous
référencez. RMySQLspécifie automatiquement un maximum de connexions
ouvertes et ferme certaines connexions pour vous, mais quand même : il est
toujours poli de se déconnecter manuellement de la base de données par la suite.
Vous le faites avec la dbDisconnect()fonction.

Le code qui vous connecte à la base de données est déjà disponible, pouvez-vous
terminer le script ?
Instructions
En utilisant la technique que vous préférez, créez un bloc de données
long_tweats. Il sélectionne les post et date colonnes à partir des observations
dans tweats lequel la longueur de caractère de la post variable dépasse 40.
Imprimer long_tweats.
Déconnectez-vous de la base de données à l'aide de dbDisconnect().

Ceci conclut le chapitre sur les bases de données. Bien sûr, il y a beaucoup plus
à apprendre sur l'interfaçage avec les bases de données et à travailler avec elles
aussi efficacement que possible, mais c'est quelque chose pour les cours plus
avancés.
3- Importation de données depuis le Web (Partie 1)
De plus en plus d'informations utilisées par les data scientists se trouvent sur le
Web. L'importation de ces données dans R nécessite une compréhension des
protocoles utilisés sur le Web. Dans ce chapitre, vous obtiendrez un cours
accéléré sur HTTP et apprendrez à exécuter vos propres requêtes HTTP depuis
R.
http
1. HTTP
De plus en plus d'informations avec lesquelles vous travaillerez en tant que data
scientist se trouvent sur le Web.

2. Données sur le Web


En fait, vous avez déjà travaillé avec de telles données. Rappelez-vous comment
vous vous êtes connecté à une base de données relationnelle distante pour
obtenir les informations exactes dont vous aviez besoin ? Le package DBI a fait
abstraction du fait que les données se trouvaient dans un emplacement distant et
a tout corrigé pour vous. Dans ce chapitre, vous examinerez les formats de
fichiers qui sont particulièrement utiles lorsqu'ils sont utilisés pour la
technologie Web, comme le fichier JSON. Je vais d'abord discuter de ce qui se
passe réellement dans les coulisses lorsque vous importez des données sur le
Web. Pour comprendre ce qui se passe dans les exemples qui suivent, je vais
vous donner un cours accéléré sur les bases du HTTP,

3. HTTP
abréviation de HyperText Transfer Protocol. Il s'agit essentiellement d'un
système de règles sur la façon dont les données doivent être échangées entre les
ordinateurs. Bref, HTTP est le langage du web. Si vous naviguez vers une page
Web par exemple, votre ordinateur, le client, envoie en fait un

4. HTTP
requête HTTP au

5. HTTP
serveur. Le serveur renvoie ensuite

6. HTTP
des données représentant la page Web, il envoie donc une réponse et la page
Web s'affiche sur votre écran. Il existe plusieurs méthodes HTTP, comme on les
appelle. Pour obtenir simplement une page Web à partir d'un serveur,

7. HTTP
vous utilisez la méthode GET, par exemple. En dehors de GET, il existe
également d'autres méthodes HTTP, mais ne nous plongeons pas dans celles-ci
ici. Au lieu de cela, jetons un coup d'œil à quelques exemples dont vous vous
souviendrez peut-être dans les chapitres précédents, mais cette fois, toutes les
données résideront sur le Web.

8. Exemple : CSV
Commençons par exemple par le fichier states-dot-csv, qui se trouve sur ce lien.
Le flux de travail typique consisterait à télécharger manuellement le fichier via
votre navigateur Web préféré, puis à pointer vers le chemin à l'intérieur de read
dot csv. cependant,

9. Exemple : CSV
cela peut être fait beaucoup plus facile! Jetez un œil à cette ligne, où nous
passons simplement l'URL sous forme de chaîne de caractères. Le résultat est
exactement le même : une base de données avec 5 observations et 4 variables.
Comment cela peut-il être si facile ? Eh bien, dans les coulisses, R découvre que
vous avez fait référence à une URL et la demande à l'aide d'une requête HTTP
GET. Le serveur répond avec le fichier csv, que R peut alors lire comme il le
faisait auparavant. Plutôt sympa, hein ? De nos jours, de nombreux sites Web
n'acceptent que les connexions sécurisées. Vous pouvez uniquement visiter ces
sites Web ou télécharger leurs fichiers avec le préfixe http_S_. R sait-il aussi
comment gérer cela? Eh bien, découvrons avec le même fichier CSV, mais cette
fois
10. Exemple : CSV
avec le préfixe HTTPS. Cela fonctionne de la même manière, génial. La prise en
charge HTTPS est intégrée à R depuis la version R 3 point 2 point 2.
Expérimentez avec l'importation de données à partir du Web

11. Entraînons-nous !
vous-même dans les exercices

Importer des fichiers plats depuis le Web


Dans la vidéo, vous avez vu que les utilsfonctions d'importation de données de
fichier plat, telles que read.csv() et read.delim(), sont capables d'importer
automatiquement à partir d'URL qui pointent vers des fichiers plats sur le Web.

Vous devez vous demander si le package alternatif de Hadley Wickham, readr,


est tout aussi puissant. Eh bien, découvrez-le dans cet exercice! Les URL
d'un .csv fichier et d'un .delim fichier sont déjà codées pour vous. C'est à vous
d'importer réellement les données. Si ça marche, c'est...
Instructions
Chargez le readr paquet. Il est déjà installé sur les serveurs de DataCamp.
Utilisez url_csv pour lire le .csv fichier vers lequel il pointe. Utilisez la
read_csv() fonction. Le .csv contient des noms de colonnes dans la première
ligne. Enregistrez le bloc de données résultant en tant que pools.
De même, utilisez url_delim pour lire dans le .txt fichier en ligne . Utilisez la
read_tsv() fonction et stockez le résultat sous la forme potatoes.
Imprimer pools et potatoes. Cela semble correct ?

Importation sécurisée
Dans les exercices précédents, vous avez travaillé avec des URL commençant
toutes par http://. Il existe cependant une alternative plus sûre à HTTP, à savoir
HTTPS, qui signifie HypterText Transfer Protocol Secure. N'oubliez pas ceci :
HTTPS est relativement sûr, HTTP ne l'est pas.
Heureusement pour nous, vous pouvez utiliser les fonctions d'importation
standard avec des https://connexions depuis la version R 3.2.2.
Instructions
Jetez un œil à l'URL dans url_csv. Il utilise une connexion sécurisée, https://.
Utilisez read.csv() pour importer le fichier au format url_csv. Le .csv fichier
auquel il fait référence contient des noms de colonnes dans la première ligne.
Appelez-le pools1.
Chargez le readr paquet. Il est déjà installé sur les serveurs de DataCamp.
Utilisez read_csv() pour lire dans le même .csv fichier au format url_csv.
Appelez-le pools2.
Imprimez la structure de pools1et pools2. On dirait que l'import s'est aussi bien
passé qu'avec une http connexion normale !

Téléchargement de fichiers
1. Téléchargement de fichiers
Semblable à ce que nous avons fait dans la vidéo précédente,

2. Exemple : Excel
utilisons maintenant le package readxl pour importer les données Excel
stockées à cette URL. Le read_excel fonctionnera-t-il hors de la boîte ici ?
Apparemment, readxl ne sait pas comment gérer les fichiers Excel stockés
sur le Web, bien que je m'attende à ce que Hadley Wickham ajoute cette
fonctionnalité dans les prochaines versions. Cela signifie-t-il que nous
devrons télécharger manuellement le fichier, puis pointer vers le fichier
local comme vous le feriez auparavant ? Pas du tout!

3. download.file()
Vous pouvez utiliser le fichier dot download ici, une fonction du package
utils. Définissons d'abord l'URL et le chemin de destination, donc où nous
voulons placer le fichier téléchargé sur notre système. Je vais appeler le
fichier local_cities dot xlsx et le placer dans mon répertoire personnel. Si
vous utilisez maintenant le fichier dot de téléchargement avec l'URL
comme premier argument et le chemin de destination comme deuxième
argument, vous êtes prêt à partir. Parfait. Ce que le fichier de points de
téléchargement a fait est simple. Il a effectué une requête GET à l'URL que
vous avez spécifiée et a stocké le contenu de la réponse à l'emplacement
que vous avez spécifié. La dernière étape consiste à utiliser la fonction
read_excel d'avant pour importer les données Excel du fichier local cette
fois. Nous pouvons à nouveau utiliser la variable dest_path ici.

4. Pourquoi download.file() ?
Vous vous demandez peut-être pourquoi l'utilisation du fichier dot de
téléchargement est utile. La réponse est encore : la reproductibilité. Vous
pouvez spécifier des URL dans vos scripts R et les télécharger via les
fonctions R au lieu de naviguer manuellement sur le Web, ce qui nécessite
plusieurs clics de souris. Il y a beaucoup plus à apprendre sur l'exécution
de requêtes GET et d'autres requêtes HTTP depuis R. Dans certains cas,
vous devrez vous authentifier avant de pouvoir télécharger des fichiers et
transmettre des paramètres supplémentaires à votre requête GET. Si vous
voulez en savoir plus à ce sujet, je vous suggère de consulter le package
httr de Hadley Wickham.

5. Entraînons-nous !
Dirigez-vous vers les exercices pour un peu plus de pratique maintenant,
amusez-vous!

Importer des fichiers Excel depuis le Web


Lorsque vous avez entendu parler de gdata, il a déjà été mentionné qu'il
gdatapeut gérer les .xlsfichiers qui se trouvent sur Internet. readxlne peut
pas, du moins pas encore. L'URL avec laquelle vous allez travailler est déjà
disponible dans l'exemple de code. Vous l'importerez une fois en utilisant
gdataet une fois avec le readxlpackage via une solution de contournement.
Instructions
Chargez les packages readxlet gdata. Ils sont déjà installés sur les serveurs
de DataCamp.
Importez le .xls fichier situé à l'URL à l' url_xls aide read.xls() de gdata.
Stockez la trame de données résultante en tant que excel_gdata.
Vous ne pouvez pas utiliser read_excel() directement avec une URL.
Suivez les instructions suivantes pour contourner ce problème :
Utilisez download.file() pour télécharger le .xls fichier derrière l'URL et le
stocker localement en tant que "local_latitude.xls".
Appel read_excel() pour importer le fichier local, "local_latitude.xls".
Nommez le bloc de données résultant excel_readxl.
Agréable! Il semble qu'il readxlne soit pas (encore ?) capable de gérer les
fichiers Excel qui se trouvent sur le Web. Cependant, une solution de
contournement simple download.file()corrige ce problème.

Téléchargement de n'importe quel fichier, sécurisé ou non


Dans l'exercice précédent, vous avez vu comment lire des fichiers Excel
sur le Web à l'aide du read_excelpackage en téléchargeant d'abord le
fichier avec la download.file()fonction.

Il y a plus : avec download.file()vous pouvez télécharger n'importe quel


type de fichier depuis le web, en utilisant HTTP et HTTPS : des images,
des fichiers exécutables, mais aussi des .RDatafichiers. Un RDatafichier
est un format très efficace pour stocker des données R.

Vous pouvez charger des données à partir d'un RDatafichier à l'aide de la


load()fonction, mais cette fonction n'accepte pas de chaîne URL comme
argument. Dans cet exercice, vous allez d'abord télécharger le RDatafichier
en toute sécurité, puis importer le fichier de données local.
Instruction
Jetez un œil à l'URL dans url_rdata. Il utilise une connexion sécurisée,
https://. Cette URL pointe vers un RData fichier contenant une trame de
données avec quelques métriques sur différents types de vin.
Téléchargez le fichier à l' url_rdata aide de download.file(). Appelez le
fichier "wine_local.RData" dans votre répertoire de travail.
Chargez le fichier que vous avez créé, wine_local.RData, à l'aide de la
load() fonction. Il prend un argument, le chemin d'accès au fichier, qui
n'est que le nom du fichier dans notre cas. Après avoir exécuté cette
commande, la variable wine sera automatiquement disponible dans votre
espace de travail.
Imprimez le summary() de l' wine ensemble de données.
Génial! Une autre façon de charger des RData fichiers distants consiste à
utiliser la url() fonction à l'intérieur de load(). Cependant, cela
n'enregistrera pas le RData fichier dans un fichier local.

Lire un fichier texte sur le Web


Wow, vous avez appris de nombreuses façons d'importer un fichier de
données à partir du Web dans les exercices précédents. Voyons si vous
pouvez vous souvenir de ce qui est possible et de ce qui ne l'est pas.

Quelle manière d'importer des données n'est PAS possible ?


Instructions
Des réponses possibles
Utilisation de la load()fonction pour charger un RDatafichier distant dans
l'espace de travail avec uniquement la chaîne URL :

load("https://s3.amazonaws.com/assets.datacamp.com/production/
course_1478/datasets/wine.RData")
Vérité! Vous ne pouvez pas utiliser directement une chaîne d'URL à
l'intérieur load()pour charger des RDatafichiers distants . Vous devez
d'abord utiliser url()ou télécharger le fichier en utilisant download.file().

HTTP ? httr ! (1)


Télécharger un fichier sur Internet signifie envoyer une requête GET et
recevoir le fichier que vous avez demandé. En interne, toutes les fonctions
décrites précédemment utilisent une requête GET pour télécharger des
fichiers.

httrfournit une fonction pratique GET()pour exécuter cette requête GET.


Le résultat est un responseobjet qui fournit un accès facile au code d'état,
au type de contenu et, bien sûr, au contenu réel.

Vous pouvez extraire le contenu de la requête à l'aide de la


content()fonction. Au moment de la rédaction de cet article, il existe trois
manières de récupérer ce contenu : en tant qu'objet brut, en tant que vecteur
de caractère ou en objet R, tel qu'une liste. Si vous ne dites pas content()
comment récupérer le contenu via l' as argument, il fera de son mieux pour
déterminer quel type est le plus approprié en fonction du type de contenu.
Instructions
Chargez le httrpaquet. Il est déjà installé sur les serveurs de DataCamp.
Utilisez GET()pour obtenir l'URL stockée dans url. Stockez le résultat de
cet GET()appel en tant que resp.
Imprimez l' respobjet. Quelles informations contient-il ?
Obtenez le contenu de respusing content()et définissez l' asargument sur
"raw". Affectez le vecteur résultant à raw_content.
Imprimer les premières valeurs raw_contentavec head().
Génial! Le contenu brut de la réponse n'a pas beaucoup de sens, n'est-ce
pas ? Heureusement, la content() fonction par défaut, si vous ne spécifiez
pas l' as argument, détermine le type de données que vous traitez et les
analyse pour vous.

HTTP ? httr ! (2)


Le contenu Web ne se limite pas aux pages HTML et aux fichiers stockés
sur des serveurs distants tels que les instances Amazon S3 de DataCamp. Il
existe de nombreux autres formats de données. Un très courant est JSON.
Ce format est très souvent utilisé par les API Web, des interfaces vers des
serveurs Web avec lesquels vous, en tant que client, pouvez communiquer
pour obtenir ou stocker des informations de manière plus compliquée.

Vous découvrirez les API Web et JSON dans la vidéo et les exercices qui
suivent, mais certaines expérimentations ne font jamais de mal, n'est-ce pas
?
Instructions
Utilisez GET()pour obtenir le urlqui a déjà été spécifié dans l'exemple de
code. Stockez la réponse en tant que resp.
Imprimer resp. Quel est le type de contenu ?
Utilisez content()pour obtenir le contenu de resp. Définissez l' asargument
sur "text". Imprimez simplement le résultat. Que vois-tu?
Utilisez content()pour obtenir le contenu de resp, mais cette fois, ne
spécifiez pas de deuxième argument. R détermine automatiquement que
vous avez affaire à un JSON et convertit le JSON en une liste R nommée.
Génial! Le fait de httrconvertir automatiquement le corps de la réponse
JSON en une liste R est très pratique.
4- Importation de données depuis le Web (Partie 2)
Importer des données depuis le Web est une chose ; être capable d'extraire
des informations utiles en est une autre. Apprenez-en plus sur le format
JSON pour vous rapprocher de la domination du Web.

API et JSON
1. API & JSON
Dans la vidéo et les exercices précédents,

2. Autres formats de données


vous avez vu comment vous pouvez obtenir des fichiers à partir du Web. Dans
le dernier exercice, vous avez également vu qu'il existe également un autre
format pour représenter les données, à savoir JSON. Le format JSON est très
simple, concis et bien structuré. En plus de cela, il est lisible par l'homme, mais
aussi facile à interpréter et à générer pour les machines. Cela le rend parfait pour
communiquer avec les API Web.

3. API
Qu'est-ce qu'une API, je vous entends demander ? Eh bien, c'est l'abréviation de
Application Programming Interface. En termes très généraux, il s'agit d'un
ensemble de routines et de protocoles permettant de construire des composants
logiciels. C'est un moyen par lequel différents composants logiciels
interagissent. Cela peut se produire de milliers de façons, mais nous nous
concentrerons uniquement sur l'API Web. En règle générale, il s'agit d'une
interface permettant d'obtenir des données et des informations traitées à partir
d'un serveur ou d'ajouter des données à un serveur, via les méthodes HTTP que
vous avez apprises précédemment.

4. Twitter
Prenons par exemple Twitter. Ils ont également une API, que vous pouvez
consulter ici. Après authentification, vous pouvez simplement demander des
URL particulières à Twitter avec la requête GET, ce qui vous permet d'obtenir
les tweets d'une personne en particulier par exemple. Twitter fait tout le travail
pour vous sur ses serveurs et crache les informations dont vous avez besoin.
Vous pouvez également utiliser l'API pour placer par programme des
commentaires sur les tweets de quelqu'un, par exemple. Les applications
possibles sont infinies. Supposons que vous soyez un tweeter passionné et que
vous vouliez savoir quels tweets ont eu le plus d'impact. Peut-être que certains
de vos tweets les plus controversés ont provoqué beaucoup de retweets et de
réactions ? Avec les données brutes de l'API de Twitter, vous pouvez rechercher
cela. Mais pourquoi les API et JSON sont-ils utiles en premier lieu ? Toutes les
informations sont déjà disponibles sur la page Web, n'est-ce pas ?

5. Infos sur Rain Man (1988)


Eh bien, supposons que vous vouliez obtenir des données sur le film Rain Man,
de 1988. Vous pouvez télécharger l'URL correspondante d'IMDb, la lire, puis
commencer à rechercher par programme dans le code HTML, qui fait plus de
4000 lignes, pour obtenir les informations dont vous avez besoin. C'est assez
sujet aux erreurs et très lent. Heureusement, il existe des alternatives. Comme ça
arrive,

6. Rain Man JSON (API OMDb)


il existe une API appelée API OMDb, capable de vous donner des informations
sur pratiquement tous les films auxquels vous pouvez penser. Cela prend
simplement une URL, avec quelques paramètres supplémentaires tels que l'ID
du film sur lequel vous souhaitez obtenir des informations et le type de réponse
que l'API comprend. Si vous visitez simplement cette page Web, vous verrez
quelque chose comme ceci. Il s'agit d'un JSON, contenant tout ce que nous
devons savoir dans un format bien structuré. Pour convertir ce JSON en une
structure de données R,

7. jsonlite
vous pouvez utiliser le package jsonlite de Jeroen Ooms. Le package est une
amélioration des packages R antérieurs pour gérer les JSON, où la conversion de
et vers JSON est plus cohérente et robuste, de sorte qu'elle fonctionne bien dans
tous les cas d'utilisation.

8. Liste Rain Man dans R


Installons et chargeons jsonlite, puis appelons simplement fromJSON sur l'URL.
Cela téléchargera les données JSON pour vous et les convertira en une liste R
nommée. Nous avons maintenant toutes les informations dans R, prêtes à faire
notre analyse. C'est bien mieux que la page HTML désordonnée où nous aurions
à creuser pour obtenir les morceaux d'intérêt, n'est-ce pas ?

9. Entraînons-nous !
Je vous suggère de faire quelques exercices avant de plonger plus profondément
dans le format JSON. Prendre plaisir!

De JSON à R
Dans le cadre le plus simple, fromJSON()peut convertir des chaînes de
caractères qui représentent des données JSON en une liste R bien
structurée. Essaie!
Instructions
Chargez le jsonlitepaquet. Il est déjà installé sur les serveurs de DataCamp.
wine_jsonreprésente un JSON. Utilisez fromJSON()pour le convertir en
une liste, nommée wine.
Afficher la structure de wine

API Quandl
Comme Filip l'a montré dans la vidéo, cela fromJSON()fonctionne
également si vous transmettez une URL sous forme de chaîne de caractères
ou le chemin d'accès à un fichier local contenant des données JSON.
Essayons cela sur l'API Quandl, où vous pouvez récupérer toutes sortes de
données financières et économiques.
Instructions
quandl_url représente une URL. Utilisez fromJSON() directement sur cette URL
et stockez le résultat au format quandl_data.
Afficher la structure de quandl_data.
Génial! Vous avez importé avec succès des données JSON directement depuis le
Web. Si vous examinez de près la structure de quandl_data, vous verrez que l'
data élément est une matrice.

API OMDb
Dans la vidéo, vous avez vu à quel point il est facile d'interagir avec une API
une fois que vous savez formuler des requêtes. Vous avez également vu
comment récupérer toutes les informations sur Rain Man depuis OMDb.
Effectuez simplement un GET()appel, puis demandez le contenu avec la
content()fonction. Cette content()fonction, qui fait partie du httrpackage, utilise
jsonliteen coulisses pour importer les données JSON dans R.

Cependant, à présent, vous savez également qu'il jsonlite peut gérer lui-même
les URL. Il vous suffit de transmettre l'URL de la demande à fromJSON() vos
données dans R. Dans cet exercice, vous utiliserez cette technique pour
comparer l'année de sortie de deux films dans la base de données Open Movie.
Instructions
Deux URL sont incluses dans l'exemple de code, ainsi qu'un fromJSON() appel
à build sw4. Ajoutez un appel similaire à build sw3.
Imprimez l'élément nommé à la Title fois sw4 et sw3. Vous pouvez utiliser l'
$opérateur. De quels films traitons-nous ici ?
Écrivez une expression qui évalue TRUE si a sw4été publiée plus tard que sw3.
Ces informations sont stockées dans l' Year élément des listes nommées.

Bien fait! Le quatrième épisode de la saga Star Wars est sorti avant le
troisième ! Assez de fromJSON()maintenant. Essayons maintenant de convertir
certaines données R au format JSON.

JSON & jsonlite


1. JSON et jsonlite
Dans cette vidéo, plongeons un peu plus dans le format JSON et le package
jsonlite. Alors, à quoi ressemble un JSON typique ? Je vais essayer d'être bref
là-dessus. Vous avez des objets JSON et des tableaux JSON.
2. Objet JSON
Un objet JSON typique ressemble à ceci. C'est une collection non ordonnée de
paires nom/valeur. où le nom est une chaîne et la valeur peut être une chaîne, un
nombre, un booléen, une valeur null, un autre objet JSON ou un tableau JSON.

3. Objet JSON
Convertissons ce JSON en chaîne R en l'enveloppant entre guillemets. J'utilise
des guillemets simples ici pour ne pas avoir à échapper à chaque guillemet
double. Passons maintenant cette chaîne à la fonction fromJSON de jsonlite, qui
convertit un code JSON en code R, et demandons la structure du résultat. Le
résultat est une liste nommée dans R, qui contient les mêmes informations. Vous
pouvez également voir que les éléments ont des classes différentes : nous avons
des caractères, des entiers et des logiques.

4. Tableau JSON
Ensuite, il existe également des tableaux JSON. Il s'agit d'une séquence
ordonnée de zéro ou plusieurs valeurs, comme celle-ci. L'appel de JSON sur
cette structure JSON donne un vecteur entier. Cependant, il s'agit en fait d'une
simplification, car les tableaux JSON, tout comme les objets JSON, sont
hétérogènes ; ils peuvent contenir des éléments de différents types. Ce tableau
JSON, par exemple, est également parfaitement valide. En essayant de convertir
ce JSON en R, donnez le résultat suivant. Les nombres ont été contraints à des
caractères, tout comme la valeur logique. Le mot-clé null a été converti en NA
dans R. Cela a dû être fait car les vecteurs R ne peuvent contenir qu'un seul type
de base, vous vous souvenez ? L'objet JSON comme le tableau JSON peuvent
contenir d'autres objets et tableaux JSON, comment cela fonctionnerait-il ?

5. Imbrication JSON
Supposons que nous ajoutions des informations à l'objet JSON d'avant. Cette
fois, j'ai formaté le JSON de manière à ce qu'il devienne plus lisible. Nous
pouvons l'étendre comme suit.

6. Imbrication JSON
Partons de JSON et voyons ce que nous obtenons. Nous obtenons une liste de
noms imbriquée, c'est parfaitement logique si vous me demandez.

7. Tableau JSON d'objets JSON


Enfin, construisons un tableau d'objets JSON, de trois personnes par exemple,
comme celui-ci. Wow, c'était inattendu. Nous avons simplement une trame de
données. Mais si vous y pensez, c'est une excellente cartographie. Nous avons
trois objets JSON, sur Frank, Julie et Zach, et ils ont tous les mêmes champs,
identifiant et nom. Cela correspond parfaitement à la description d'une trame de
données R. Ce qui est merveilleux, c'est que jsonlite s'occupe de tout cela pour
nous. Il existe de nombreux autres cas d'utilisation d'objets et de tableaux JSON,
mais je ne passerai pas en revue chacun d'entre eux. à côté de fromJSON,

8. Autres fonctions jsonlite


il existe d'autres fonctions utiles dans le package jsonlite, telles que tojson, pour
reconvertir les structures de données r en json, et prettify et minify, pour
modifier l'affichage des jsons. vous apprendrez tout à ce sujet dans les exercices
qui suivent ! Si vous utilisez le package jsonlite, vous ne traiterez normalement
pas directement avec les JSON, mais il est bon d'en avoir un niveau de
compréhension de base.

9. Entraînons-nous !

Pratique JSON (1)


JSON est construit sur deux structures : les objets et les tableaux. Pour vous
aider à les tester, deux chaînes JSON sont incluses dans l'exemple de code. C'est
à vous de les modifier de manière appropriée, puis d'appeler jsonlitela
fromJSON()fonction 's dessus à chaque fois.
Instructions
Modifiez l'affectation de json1telle sorte que le vecteur R après conversion
contienne les nombres 1 à 6, dans l'ordre croissant. Ensuite, appelez
fromJSON()le json1.
Adapter le code json2tel qu'il est converti à une liste exhaustive de deux
éléments: acontenant les numéros 1, 2 et 3 et bcontenant les numéros 4, 5 et 6.
Ensuite, appelez fromJSON()le json2.

Pratique JSON (2)


Nous avons préparé deux autres chaînes JSON dans l'exemple de code. Pouvez-
vous les modifier et appeler jsonlite la fromJSON() fonction de sur eux, comme
dans l'exercice précédent ?
Instructions
Retirer les caractères de json1la construction d' un 2 par 2 matrice contenant
seulement 1, 2, 3 et 4. Appelez fromJSON() le json1.
Ajoutez des caractères de json2telle sorte que le bloc de données dans lequel le
json est converti contienne une observation supplémentaire dans la dernière
ligne. Pour ces observations, avaut 5 et bvaut 6. Appeler fromJSON()une
dernière fois, le json2.
Génial! Comme vous pouvez le voir, différentes structures de données JSON
conduiront à différentes structures de données au format R.

vers JSON()
En plus de convertir JSON en R avec fromJSON(), vous pouvez également
utiliser toJSON()pour convertir les données R au format JSON. Dans son
utilisation la plus basique, vous passez simplement à cette fonction un objet R à
convertir en JSON. Le résultat est un objet R de la classe json, qui est
essentiellement une chaîne de caractères représentant ce JSON.

Pour cet exercice, vous travaillerez avec un .csvfichier contenant des


informations sur la quantité d'eau dessalée produite dans le monde. Comme vous
le verrez, il contient beaucoup de valeurs manquantes. Ces données se trouvent
sur l'URL spécifiée dans l'exemple de code.
Instructions
Utilisez une fonction du utilspackage pour importer le .csvfichier directement à
partir de l'URL spécifiée dans url_csv. Enregistrez le bloc de données résultant
en tant que water. Assurez-vous que les chaînes ne sont pas importées en tant
que facteurs.
Convertissez la trame de données wateren JSON. Appelez l'objet résultant
water_json.
Imprimez water_json.
Toutes nos félicitations! Comme vous pouvez le voir, le JSON que vous avez
imprimé n'est pas facile à lire. Dans l'exercice suivant, vous imprimerez d'autres
JSON et explorerez des moyens d'embellir ou de minimiser la sortie.

Minifier et embellir
Les JSON peuvent se présenter sous différents formats. Prenez ces deux JSON,
qui sont en fait exactement les mêmes : le premier est dans un format minifié, le
second est dans un joli format avec indentation, espace et nouvelles lignes :

# Mini
{"a":1,"b":2,"c":{"x":5,"y":6}}

# Pretty
{
"a": 1,
"b": 2,
"c": {
"x": 5,
"y": 6
}
}
À moins que vous ne soyez un ordinateur, vous préférez sûrement la deuxième
version. Cependant, la forme standard qui toJSON()revient est la version
minifiée, car elle est plus concise. Vous pouvez adapter ce comportement en
définissant l' prettyargument inside toJSON()sur TRUE. Si vous avez déjà une
chaîne JSON, vous pouvez utiliser prettify()ou minify()pour rendre le JSON
aussi joli ou aussi concis que possible.
Instructions
Convertissez le mtcarsjeu de données, disponible par défaut dans R, en un joli
fichier JSON . Appelez le JSON résultant pretty_json.
Imprimez pretty_json. Pouvez-vous comprendre la sortie facilement?
Convertissez pretty_jsonen une version minimale en utilisant minify(). Stockez
cette version sous une nouvelle variable, mini_json.
Imprimez mini_json. Quelle version préférez-vous, la jolie ou la minifiée ?

Génial! J'espère que vous conviendrez que le joli format est bien plus facile à
lire et à comprendre que le format minifié ! Cet exercice conclut le cours sur
l'import de données !

5- Importation de données à partir de progiciels statistiques


A côté de R, il existe également d'autres progiciels statistiques couramment
utilisés : SAS, STATA et SPSS. Chacun d'eux a son propre format de fichier.
Apprenez à utiliser les packages havre et étrangers pour les intégrer à R avec
une facilité remarquable !

Havre
1. havre de paix
Une chose dont nous n'avons pas encore discuté, ce sont les données d'autres

2. Progiciels statistiques
progiciels statistiques. Le plus commun

3. Progiciels statistiques
ceux-ci sont SAS, abréviation de Statistical Analysis Software, STATA, qui
signifie statistiques et données, et SPSS, ou le progiciel statistique pour les
sciences sociales. Le logiciel que les gens utilisent dépend du domaine d'études
ou de leurs préférences personnelles.

4. Progiciels statistiques
SAS, par exemple, est l'un des outils logiciels d'analyse commerciale les plus
répandus et est également couramment utilisé en biostatistique ou en sciences
médicales. D'autre part, STATA est un outil typique pour les économistes. SPSS
est souvent utilisé en sciences sociales, d'où son nom.

5. Progiciels statistiques
En fin de compte, chaque logiciel utilise et produit ses propres types de fichiers.
Les extensions les plus courantes sont répertoriées ici.

6. Packages R pour importer des données


Quel que soit le package d'où proviennent vos données, R est préparé pour
chaque fichier qui arrivera ! Dans la suite de ce chapitre, vous apprendrez à
utiliser deux packages R capables d'importer des données depuis ces
environnements logiciels : havre et étranger. Le premier est écrit par Hadley
Wickham, l'autre par l'équipe R core. Le package étranger existe depuis plus
longtemps, tandis que Haven est toujours en développement aujourd'hui, fin
2015. Wickham vise à fournir une alternative plus cohérente, plus facile à
utiliser et plus rapide à l'étranger. D'autre part, l'étranger prend en charge plus de
formats de données. Mais ne sautons pas aux conclusions ici. Dans cette vidéo,
je parlerai un peu plus de Haven, et dans la prochaine vidéo, je parlerai
d'étranger. Après cela, vous pouvez choisir vous-même le forfait que vous
préférez.

7. paradis
Donc, le paquet paradis. Ce package peut traiter les fichiers de données SAS,
STATA et SPSS. Pour ce faire, il utilise la bibliothèque ReadStat C d'Evan
Miller. Tout comme readr et readxl, le package est extrêmement simple à
utiliser. Vous passez le chemin d'accès au fichier de données et une trame de
données R en résulte. Après avoir installé Haven avec install-dot-packages, vous
pouvez le charger avec la fonction de bibliothèque.
8. Données SAS
Commençons par charger d'abord un fichier de données SAS. Supposons que
vous ayez un fichier 'ontime dot sas7bdat' dans votre répertoire de travail actuel.
Il contient des données sur le pourcentage de vols arrivés à temps pour plusieurs
compagnies aériennes aux États-Unis. Pour importer ces données sous forme de
trame de données à temps, il vous suffit d'utiliser la fonction read_sas et de
transmettre le chemin d'accès au fichier de données :

9. Données SAS
Si vous imprimez sa structure, vous verrez que chaque variable du bloc de
données possède également un attribut label. Si vous connaissez bien SAS, vous
savez que vous pouvez étiqueter des variables dans des ensembles de données
SAS. Eh bien, ce sont ces mêmes étiquettes qui sont également disponibles dans
R maintenant.

10. Données SAS


Lorsque vous imprimez simplement à temps, vous ne voyez aucune différence
avec un bloc de données normal sans étiquettes.

11. Données SAS


Si vous utilisez la fonction View de RStudio pour explorer un ensemble de
données, cependant,

12. Données SAS


vous verrez les étiquettes : Pouvez-vous lire les données ici ? En mars 1999, par
exemple,

13. Données SAS


il semble qu'environ 79 pour cent de tous les vols de Delta Airline étaient à
l'heure.
14. Données STATA
Ensuite, c'est STATA. Haven est capable d'importer les fichiers Stata 13 et 14
avec la fonction read_stata. Vous pouvez également utiliser read_dta, qui fait
exactement la même chose.

15. Données STATA


Tout comme avant, le simple fait de passer le chemin d'accès au fichier dot dta
fera l'affaire. Supposons que les mêmes statistiques sur les compagnies
aériennes américaines soient maintenant disponibles sous forme de fichier dot
dta, ontime dot dta, qui se trouve dans votre répertoire de travail actuel, vous
pouvez essayer l'un ou l'autre de ces appels. L'impression semble à nouveau
assez familière, mais il y a quelque chose de différent ici. Les noms des
compagnies aériennes sont convertis en nombres, ce ne sont plus des chaînes de
caractères. Comment est-ce arrivé?

16. Données STATA


Si vous regardez la classe de la colonne Airline d'ontime, elle semble être de
classe étiquetée. Il s'agit de la version R du vecteur étiqueté, une structure de
données courante dans d'autres logiciels statistiques. Si vous imprimez
simplement cette colonne Compagnie aérienne, vous pouvez voir les noms des
compagnies aériennes d'avant. R a attribué des numéros à chaque variable selon
leur ordre alphabétique. Comme vous souhaitez poursuivre votre analyse dans
R, c'est une bonne idée de convertir ce vecteur en une classe R standard, telle
qu'un facteur.

17. as_factor()
Au lieu de la fonction standard en tant que facteur de point, de base R, vous
aurez besoin de 'haven's comme facteur de soulignement pour cela. C'est le type
de variables catégorielles auxquelles nous sommes habitués. Dans ce cas, il
serait peut-être encore mieux d'avoir des caractères simples pour les noms de
compagnies aériennes, car ce ne sont pas vraiment des catégories. La fonction de
base R en tant que caractère de point peut le faire pour vous. Plaçons-le autour
de l'appel précédent.
18. as_factor()
Si vous attribuez à nouveau ce résultat à la colonne Airline of ontime, vous avez
préparé le bloc de données ontime pour une analyse supplémentaire, avec les
noms sous forme de simples chaînes de caractères.

19. Données SPSS


Enfin, il y a les données SPSS. Ici, vous voudrez utiliser read_spss. En fonction
de l'extension, Haven décidera pour vous quelle fonction appeler : read_por pour
les fichiers dot por, ou read_sav pour les fichiers dot sav. Chargeons une fois de
plus les données de la compagnie aérienne, qui sont stockées sous forme de
fichier dot sav dans le dossier datasets de notre répertoire personnel. Encore une
fois, une trame de données en résulte. La colonne Airline est à nouveau un soi-
disant vecteur étiqueté. Les noms de colonnes ici sont légèrement différents
d'avant.

20. Progiciels statistiques


Cela devrait être clair maintenant : Haven est incroyablement facile à utiliser et
fait simplement ce qu'il est censé faire. Jetez un œil au résumé ici, maintenant
avec les fonctions correspondantes.

21. Entraînons-nous !
Maintenant, allez-y et entraînez-vous !

Importer des données SAS avec Haven


havenest un progiciel extrêmement simple d'utilisation pour importer des
données à partir de trois progiciels : SAS, STATA et SPSS. Selon le logiciel,
vous utilisez différentes fonctions :

SAS : read_sas()
STATA : read_dta()(ou read_stata(), qui sont identiques)
SPSS : read_sav()ou read_por(), selon le type de fichier.
Toutes ces fonctions prennent un argument clé : le chemin d'accès à votre fichier
local. En fait, vous pouvez même passer une URL ; haventéléchargera alors
automatiquement le fichier pour vous avant de l'importer.

Vous travaillerez avec des données sur l'âge, le sexe, le revenu et le niveau
d'achat (0 = faible, 1 = élevé) de 36 personnes (Source : SAS ). Les informations
sont stockées dans un fichier SAS, sales.sas7bdat, qui est disponible dans votre
répertoire de travail actuel. Vous pouvez également télécharger les données ici .
Instructions
Chargez le havenpaquet ; il est déjà installé sur les serveurs de DataCamp.
Importez le fichier de données "sales.sas7bdat". Appelez le bloc de données
importé sales.
Afficher la structure de salesavec str(). Certaines colonnes représentent des
variables catégorielles, elles devraient donc être des facteurs.
Toutes nos félicitations! Comme vous pouvez le voir, read_sas()vous permet
d'importer facilement des fichiers de données SAS .

Que dit le graphique ?


Un graphique peut être très utile pour explorer la relation entre deux variables.
Si vous passez plot()deux arguments à la fonction, le premier sera tracé sur l'axe
des x, le second sera tracé sur l'axe des y.

Les données sur le commerce du sucre sont à nouveau disponibles sur


http://assets.datacamp.com/production/course_1478/datasets/trade.dta .

Après avoir importé le bloc de données, vous devez tracer deux de ses variables,
Importcontre Weight_I, et décrire leur relation ! havenest déjà chargé dans votre
session R, vous pouvez donc commencer à importer immédiatement.
Instructions
Des réponses possibles
Les chiffres d'importation en USD et les chiffres d'importation en poids sont
plutôt positivement corrélés.
Corriger. Vous pouvez repérer une tendance à la hausse parmi les points de
données. Cela a bien sûr du sens : plus le sucre est échangé, plus le poids
échangé est élevé.

Importer des données SPSS avec Haven


Le havenpackage peut également importer des fichiers de données à partir de
SPSS. Encore une fois, l'importation des données est assez simple. Selon le
fichier de données SPSS avec lequel vous travaillez, vous aurez besoin soit
read_sav()- pour les .savfichiers - soit read_por()- pour les .porfichiers.

Dans cet exercice, vous travaillerez avec des données sur quatre des traits de
personnalité des Big Five pour 434 personnes (Source : University of Bath ). Le
Big Five est un concept psychologique comprenant, à l'origine, cinq dimensions
de la personnalité pour classer la personnalité humaine. Le jeu de données SPSS
est appelé person.sav et est disponible dans votre répertoire de travail.
Instructions
Utilisez read_sav() pour importer les données SPSS au format "person.sav".
Nommez le bloc de données importé traits.
Traits contient plusieurs valeurs manquantes, ou NAs. Exécutez summary()
dessus pour savoir combien de NAs sont contenus dans chaque variable.
Imprimez un sous-ensemble des individus qui ont obtenu un score élevé en
extraversion et en amabilité, c'est-à-dire un score supérieur à 40 pour chacune de
ces deux catégories. Vous pouvez utiliser subset() pour cela.

Factoriser, deuxième tour


Dans le dernier exercice, vous avez appris à importer un fichier de données à
l'aide de la commande read_sav(). Avec les fichiers de données SPSS, il peut
également arriver que certaines des variables que vous importez aient la
labelledclasse. Ceci est fait pour conserver toutes les informations d'étiquetage
qui étaient à l'origine présentes dans les fichiers .savet .por. Il est conseillé de
contraindre (ou de modifier) ces variables en facteurs ou autres classes R
standard.
Les données pour cet exercice impliquent des informations sur les employés et
leurs attributs démographiques et économiques (Source : QRiE ). Les données
peuvent être trouvées sur l'URL suivante :

http://s3.amazonaws.com/assets.datacamp.com/production/course_1478/
datasets/employee.sav
Instructions
Importez les données SPSS directement à partir de l'URL et stockez la trame de
données résultante au format work.
Affichez le résumé de la GENDER colonne de work. Cette information ne vous
donne pas beaucoup d'informations utiles, n'est-ce pas ?
Convertissez la GENDER colonne en work un facteur, la classe pour désigner
les variables catégorielles dans R. Utilisez as_factor().
Affichez à nouveau le résumé de la GENDER colonne. Cette fois, l'impression
est beaucoup plus logique.

Etranger
1. étranger
Vous savez déjà importer vos données à l'aide du package Wickham's Haven,
génial !

2. étranger
Cependant, je vous ai également dit qu'il existe une autre alternative, le package
étranger, écrit par l'équipe principale de R. Bien qu'il soit un peu moins cohérent
dans la dénomination et l'utilisation, c'est un outil très complet qui peut
fonctionner avec toutes sortes de formats de données étrangers. En plus
d'importer des fichiers SAS, STATA et SPSS, il peut également gérer des
formats encore plus exotiques, de Systat et Weka par exemple. Il est également
capable d'exporter à nouveau des données vers différents formats. Je ne parlerai
cependant que de l'importation de données SAS, STATA et SPSS. Avant d'y
arriver, laissez-moi installer et charger le package étranger.
3. SAS
Commençons d'abord par SAS. Eh bien, ici apparaît le premier inconvénient de
l'étranger par rapport au paradis. L'étranger ne peut pas importer de fichiers de
données SAS uniques, tels que les fichiers dot sas7bdat. Avec l'étranger, seules
les bibliothèques dites SAS peuvent être lues. Ces bibliothèques sont
généralement au format dot-xport. Si vous cherchez vraiment une alternative au
refuge ici, vous pouvez consulter un package appelé sas7bdat.

4. STATUTS
En ce qui concerne STATA, l'étranger peut être utilisé pour lire les fichiers dot
dta des versions 5 à 12 de Stata aujourd'hui. Vous pouvez le faire avec la
fonction read dot dta. Comme vous l'avez vu précédemment, les packages de
l'équipe principale R tels que utils et ce package étranger utilisent des points
dans leurs noms de fonction, tandis que les packages de Wickham utilisent des
traits de soulignement. Jetez un œil à cette utilisation simplifiée de la fonction
read dot dta. Comme vous vous en doutez probablement, vous devez d'abord
définir un chemin de fichier. Il peut s'agir d'un fichier local ou d'une URL.

5. read.dta()
Fondamentalement, cela est déjà suffisant pour importer un ensemble de
données, comme le montre cet appel à importer l'ensemble de données de
ponctualité des compagnies aériennes américaines.

6. read.dta()
Jetez un œil à la structure de cette trame de données. La variable Compagnie
aérienne est déjà un facteur. Cela est dû au fait que l'argument convert dot factor
de la fonction read dot dta est TRUE par défaut. Cela crée ensuite
automatiquement des facteurs à partir des valeurs STATA étiquetées. C'est
quelque chose que vous deviez faire manuellement dans le package Haven avec
as_factor, vous vous souvenez ?

7. read.dta() - convert.factors
Voyons ce qui se passe si nous définissons les facteurs de points de conversion
sur FALSE. La colonne Compagnie aérienne est maintenant entière. Ces
informations sur les compagnies aériennes sont-elles alors perdues ? Pas du tout.
Notez toutes les informations stockées dans les attributs du bloc de données. À
partir de l'attribut version, par exemple, vous pouvez dire que nous avons affaire
à un fichier STATA 7. L'attribut de table de points d'étiquette contient un
mappage entre les codes de compagnies aériennes entiers et leurs noms réels.
Pour travailler facilement avec l'ensemble de données, vous voudrez cependant
vous en tenir à l'argument par défaut des facteurs de points de conversion, qui
est VRAI.

8. read.dta() - plus d'arguments


Semblable à convertir les facteurs de points, il existe également des dates de
points de conversion pour spécifier si vous souhaitez que les informations
d'heure et de date STATA soient converties en objets R Date et POSIXct.
Comme c'est quelque chose que vous voudrez généralement faire, les valeurs par
défaut ici sont TRUE. Enfin, je voulais également mentionner l'argument du
type de point manquant. Si vous êtes familier avec STATA 8 et versions
ultérieures, vous saurez qu'il existe un support pour différents types de valeurs
manquantes, 27 d'entre elles pour être précis. Dans R, il n'y a qu'un seul type de
valeurs manquantes, NA. Si vous définissez l'argument de type manquant sur
FALSE, toutes ces différentes valeurs manquantes sont converties en NA. S'il
est défini sur TRUE, une liste contenant des informations sur la manière dont
différentes valeurs pour différentes variables sont manquantes est incluse dans
les attributs de la trame de données renvoyée.

9. SPSS
L'importation de fichiers SPSS à l'étranger fonctionne de la même manière.
Cette fois cependant, vous aurez besoin de la fonction read dot spss. Pas très
surprenant n'est-ce pas ? Jetez un autre coup d'œil à une version réduite de son
utilisation. Comme d'habitude, le chemin du fichier vient en premier. Pour le
reste, tous les noms d'arguments sont différents lorsque vous les comparez à la
fonction read dta d'avant. C'est ce que je voulais dire par pas vraiment cohérent
avant "utiliser des étiquettes de points de valeur de point", qui est VRAI par
défaut, spécifie si les variables qui sont des vecteurs étiquetés dans SPSS
doivent être converties en facteurs R. Cet argument est donc similaire à
l'argument du facteur de point converti à partir des données lues. L'argument 'to
dot data dot frame' indique à R s'il faut ou non renvoyer les données SPSS sous
forme de trame de données. Étrangement, c'est FALSE par défaut, qui a une liste
étrangère contenant toutes les colonnes différentes. Mais vous savez déjà qu'un
bloc de données est simplement un type spécial de liste, donc la différence n'est
pas si grande. A côté de ces deux arguments, il y en a beaucoup d'autres, tels que
les noms de facteurs de rognage, les valeurs de rognage et l'utilisation des
manquants. Leur objectif est souvent similaire à ce que vous avez vu pour la
fonction read dot dta, mais pas toujours. Foreign vise un traitement spécifique
des différents types de fichiers de données. Cela ne profite pas à la cohérence,
mais offre un contrôle total sur la manière dont les fichiers de données sont
réellement importés. Pour en savoir plus sur l'import de données avec l'étranger,
vous pouvez toujours consulter la documentation. Mais garde ça pour plus tard,
Leur objectif est souvent similaire à ce que vous avez vu pour la fonction read
dot dta, mais pas toujours. Foreign vise un traitement spécifique des différents
types de fichiers de données. Cela ne profite pas à la cohérence, mais offre un
contrôle total sur la manière dont les fichiers de données sont réellement
importés. Pour en savoir plus sur l'import de données avec l'étranger, vous
pouvez toujours consulter la documentation. Mais garde ça pour plus tard, Leur
objectif est souvent similaire à ce que vous avez vu pour la fonction read dot dta,
mais pas toujours. Foreign vise un traitement spécifique des différents types de
fichiers de données. Cela ne profite pas à la cohérence, mais offre un contrôle
total sur la manière dont les fichiers de données sont réellement importés. Pour
en savoir plus sur l'import de données avec l'étranger, vous pouvez toujours
consulter la documentation. Mais garde ça pour plus tard,

10. Entraînons-nous !
dirigez-vous d'abord vers les exercices interactifs pour vous entraîner. Vous y
verrez comment différents arguments influencent la façon dont les données sont
importées.

Importer des données STATA avec l'étranger (1)


Le foreign package offre une fonction simple pour importer et lire les données
STATA : read.dta().

Dans cet exercice, vous importerez des données sur les élections présidentielles
américaines de l'an 2000. Les données dans florida.dta contiennent le nombre
total de votes pour chacun des quatre candidats ainsi que le nombre total de
votes par zone électorale dans l'État de Floride (Source : Département d'État de
Floride ). Le fichier est disponible dans votre répertoire de travail, vous pouvez
le télécharger ici si vous souhaitez en expérimenter davantage.
Instructions
Chargez le foreign paquet ; il est déjà installé sur les serveurs de DataCamp.
Importez les données sur les élections en Floride "florida.dta", et nommez le
bloc de données résultant florida. À utiliser read.dta() sans spécifier d'arguments
supplémentaires.
Découvrez les 6 dernières observations de florida with tail()

Importer des données STATA avec l'étranger (2)


Les données peuvent être très diverses, allant des vecteurs de caractères aux
variables catégorielles, aux dates et plus encore. C'est dans ces cas que les
arguments supplémentaires de read.dta()seront utiles.

Les arguments que vous utilisez le plus souvent sont convert.dates,


convert.factors, missing.type et convert.underscore. Leur signification est assez
simple, comme l'a expliqué Filip dans la vidéo. Il s'agit de convertir
correctement les données STATA en structures de données R standard. Tapez ?
read.dtapour connaître les valeurs par défaut.

L'ensemble de données pour cet exercice contient des mesures socio-


économiques et l'accès à l'éducation pour différentes personnes (Source :
Banque mondiale ). Ces données sont disponibles sous la forme edequality.dta,
qui se trouve dans le worldbankdossier de votre répertoire de travail.
Instructions
Spécifiez le chemin d'accès au fichier à l'aide de file.path(). Appelez-le path.
N'oubliez pas que le "edequality.dta"fichier se trouve dans le
"worldbank"dossier.
Utilisez la pathvariable pour importer le fichier de données de trois manières
différentes ; montrer à chaque fois sa structure avec str():
edu_equal_1: en passant uniquement le fichier pathà read.dta().
edu_equal_2: En passant le fichier path et en définissant convert.factors sur
FALSE.
edu_equal_3: En passant le fichier pathet en définissant convert.underscore sur
TRUE.

Génial! Pouvez-vous faire la différence entre les différentes versions de


read.dta()? Pour ces données, la première version (où vous avez simplement
spécifié le chemin du fichier) sera la plus utile pour travailler. Passez à l'exercice
suivant pour voir si vous comprenez réellement vos données !

Connaissez-vous vos données ?


L'exercice précédent portait sur les indicateurs socio-économiques et l'accès à
l'éducation de différents individus. L' edu_equal_1ensemble de données que
vous avez créé est déjà disponible dans l'espace de travail. Maintenant que vous
l'avez dans R, il est assez facile d'obtenir des informations de base.

Par exemple, vous pouvez vous demander combien d'observations (par exemple
combien de personnes) ont une valeur agesupérieure à 40 et sont literate? Quand
vous appelez

str(edu_equal_1)
Vous verrez qu'il ages'agit d'un nombre entier et d' literateun facteur, avec les
niveaux "oui" et "non". L'expression suivante répond donc à la question :

nrow(subset(edu_equal_1, age > 40 & literate == "yes"))


A vous de répondre maintenant à une question similaire :

Combien d'observations/d'individus d'origine bulgare ont un revenu supérieur à


1000 ?
Instructions
Des réponses possibles
8997
La base de données contient 8997 individus d'origine bulgare dont le revenu est
supérieur à 1000. Maintenant que vous êtes familiarisé avec l'importation de
données STATA, il est temps de vous salir les mains avec certaines données
SPSS !

Importer des données SPSS avec l'étranger (1)


Toutes les grandes choses viennent par paires. Lorsqu'il est foreign fourni
read.dta() pour lire les données Stata, il existe également read.spss() pour lire les
fichiers de données SPSS. Pour obtenir un bloc de données, assurez-vous de
définir à l' to.data.frame = TRUE intérieur read.spss().

Dans cet exercice, vous travaillerez avec des variables socio-économiques de


différents pays (Source : Quantative Data Analysis in Education). Les données
SPSS se trouvent dans un fichier appelé international.sav, qui se trouve dans
votre répertoire de travail. Vous pouvez également le télécharger ici si vous
voulez jouer un peu plus avec.
Instructions
Importez le fichier de données "international.sav" et demandez à R de le
convertir en un bloc de données. Stockez cette trame de données en tant que
demo.
Créez une boîte à moustaches de la gdp variable de demo.

Excursion : Corrélation
Si vous êtes familier avec les statistiques, vous avez entendu parler de la
corrélation de Pearson. C'est une mesure pour évaluer la dépendance linéaire
entre deux variables, disons et . Il peut aller de -1 à 1 ; s'il est proche de 1, cela
signifie qu'il existe une forte association positive entre les variables. Si est élevé,
aussi a tendance à être élevé. S'il est proche de -1, il existe une forte association
négative : Si est haut, a tendance à être faible. Lorsque la corrélation de Pearson
entre deux variables est de 0, ces variables sont éventuellement indépendantes :
il n'y a pas d'association entre et .

Vous pouvez calculer la corrélation entre deux vecteurs avec la cor()fonction.


Prenons par exemple ce code qui calcule la corrélation entre les colonnes
heightet widthd'une trame de données fictive size:

cor(size$height, size$width)
Les données avec lesquelles vous avez travaillé dans l'exercice précédent,
international.sav , sont à nouveau disponibles dans votre répertoire de travail. A
vous maintenant de l'importer et d'effectuer les bons calculs pour répondre à la
question suivante :

Quel est le coefficient de corrélation pour les deux variables numériques gdpet
f_illit(taux d'analphabétisme féminin) ?
Instructions
Des réponses possibles
La corrélation est d'environ -0,45. Il y a une corrélation négative, mais elle est
plutôt faible.
La valeur du coefficient de corrélation est égale à -0,4476856, pour être précis.
Cela indique une association négative entre le PIB et l'analphabétisme féminin.

Importer des données SPSS avec l'étranger (2)


Dans l'exercice précédent, vous avez utilisé l' to.data.frame argument à
l'intérieur de read.spss(). Il existe de nombreuses autres façons de personnaliser
la façon dont vos données SPSS sont importées.

Dans cet exercice, vous expérimenterez un autre argument, use.value.labels. Il


spécifie si les variables avec des étiquettes de valeur doivent être converties en
facteurs R avec des niveaux nommés en conséquence. L'argument est TRUEpar
défaut, ce qui signifie que les variables dites étiquetées dans SPSS sont
converties en facteurs dans R.
Vous travaillerez à nouveau avec les données international.sav , qui sont
disponibles dans votre répertoire de travail actuel.
Instructions
Importer le fichier de données "international.sav"sous forme de bloc de données,
demo_1.
Imprimez les premières lignes de l' demo_1utilisation de la head()fonction.
Importez le fichier de données en "international.sav"tant que bloc de données
demo_2, mais cette fois de manière à ce que les variables avec des étiquettes de
valeur ne soient pas converties en facteurs R.
Encore une fois, imprimez les premières lignes de demo_2. Pouvez-vous faire la
différence entre les deux trames de données ?

Vous aimerez peut-être aussi