1. Grâce à ce formulaire vous pouvez proposer une astuce ou un script sur R.
  2. Votre script doit pouvoir être lancé en l'état. Veuillez penser à :
    • inclure le chargement des "library" nécessaires
    • construire un petit jeu de données si besoin est.
    • commenter les lignes de codes pour en faciliter la compréhension.
  3. Le titre de votre script ou astuce doit être clair et explicite.
  4. Pensez à mettre votre code entre les balises [R] et [/R]; Pour cela, vous pouvez utiliser le bouton

Vous pouvez utiliser vos comptes Facebook, twitter ou google pour vous identifer (google est compatible yahoo, openID...)
L'ideal étant de vous connecter si vous avez un compte utilisateur, ou faire une demande de compte utilisateur si vous n'en avez pas encore.
Créer un compte va vous permettre de pouvoir éditer vos codes et de mettre en avant votre site internet.
Sinon vous pouvez soumettre anonymement en remplissant les champs ci-après.







Choisissez les catégories correspondantes à votre Code:

  • algorithmique
  • Analyse de survie
  • base indispensable
  • bayésien
  • configuration de R
  • exportation de données
  • fonctions utiles
  • graphique
  • importation de données
  • inférence
  • manipulation de données
  • message d'erreur
  • modélisation
  • Non classé
  • optimisation
  • planification
  • programmer avec R
  • regression linéaire
  • sig - cartographie
  • Test
  • tidyverse
  • Transformation de données


Comment lire le contenu d’un shapefile avec R ?

0
dans sig - cartographie, Transformation de données
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading...
Un shapefile est un fichier d’information géographique avec un format vectoriel. Il permet de représenter des points (e.g. villes), des lignes (e.g. routes) et des polygones (e.g. départements) avec un système d’information géographique. Le format shapefile est composé de plusieurs fichiers séparés (4 minimum):
  • data.shp : informations de géométrie (coordonnées)
  • data.prj : information de système de projection
  • data.dbf : table des attributs
  • data.shx : indice de position des géométries
Dans R, deux packages majeurs sont utilisés pour manipuler les données géographiques de type vectoriel:
  • {sp} : Le package de référence. Il utilise notamment la librairie {rgdal} pour lire les données géographiques, un package utilisant la librairie gdal (http://www.gdal.org/).
  • {sf} : Sorti sur CRAN en 2017, il permet de travailler avec les objets vectoriels avec toutes les fonctions du {tidyverse}. Il utilise gdal de manière native.

Lire le contenu d’un shapefile avec la librairie {sp}

Le shapefile sera lu directement avec la librairie {rgdal}. Il pourra ensuite être utilisé avec les différentes fonctions du package {sp}. Un shapefile contient toujours plusieurs fichiers ayant tous le même nom mais une extension différente. Pour le lire avec la fonction rgdal de la librarie {sp} , il faut donner le dossier (dsn) dans lequel il est sauvé et le nom de la couche (layer) sans extension.
library(rgdal)
library(sp)
shp <- readOGR(dsn = 'chemin/vers/dossier', 
        layer = 'NomDeCoucheSansExtension')
Vous pourrez ensuite récupérer les informations suivantes:
  • projection
proj4string(shp)
  • coordonnées des objets (pertinent pour les fichiers de points)
coordinates(shp)
  • Les données de la table attributaire sans l’information géographique
shp@data
# ou
data.frame(shp)

Lire le contenu d’un shapefile avec la librairie {sf}

Comme pour {rgdal}, la lecture du shapefile se fait en spécifiant le dossier (dsn) et le nom de la couche (layer) sans extension.
library(sf)
shp <- st_read(dsn = 'chemin/vers/dossier', 
        layer = 'NomDeCoucheSansExtension')
Vous pourrez ensuite récupérer les informations suivantes:
  • projection
st_crs(shp)
  • coordonnées des objets. Les coordonnées des lignes et des polygones sont fournies avec les identifiants des lignes / sous-lignes ou polygones / sous-polygones auxquels ils appartiennent.
st_coordinates(shp)
  • Les données de la table attributaire sans l’information géographique. Les opérations classiques sur les tables de données peuvent être réalisées directement l’objet shp>/code>.
data.frame(shp)

Proposé par sebastien.

Pas encore de commentaire, cliquez ici pour réagir.

Comment détecter si une valeur se situe entre deux autres valeurs ? between()

0
dans manipulation de données, tidyverse
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading...

Est-ce que la valeur associée à votre variable est comprise entre deux autres valeurs ? Vous le saurez en faisant appel à between, du package {dplyr} !

{dplyr} est un package du tidyverse que l’on a jamais fini de découvrir. Regorgeant de fonctions facilitant la manipulation de données, ce package répond à quasiment toutes les questions que vous pourriez vous poser sur vos données… Et par exemple : comment savoir si une valeur est entre deux autres valeurs.

Pour le savoir, direction between, qui prendra trois paramètres : votre valeur, la valeur de la borne de droite, et la valeur de la borne de gauche. Le tout vous renvoie un vrai ou faux

Par exemple :

  library(dplyr)
  x <- 0 
  between(x, -1, 1)
  [1] TRUE
 
 
 
Le vrai plus étant de pouvoir effectuer de la sélection avec cette fonction. Par exemple, si l'on souhaite filtrer les données qui sont en dessous de la moyenne, ou en dessous d'un certain seuil :
 
 
<pre lang="rsplus">
  x <- 1:1000
  x[between(x, 1, mean(x))]
 
  iris %>%
    filter(between(Sepal.Length, 1, 5))

Pas encore de commentaire, cliquez ici pour réagir.

Comment créer un barplot avec ggplot? geom_bar()

0
dans graphique, tidyverse
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading...

Il s’agit d’un des formats de graphiques les plus populaires : le barplot est simple à réaliser, encore plus avec ggplot2. Du moins, si l’on connait ses spécificités.

Package du tidyverse, {ggplot2} est un outil de visualisation ultra célèbre parmi les utilisateurs de R. Et pour cause, même si sa syntaxe peut surprendre à première vue, les résultats obtenus sont haut-de-gamme.

Alors, comment réaliser un barplot ? Tout simplement avec le geom geom_bar(). À noter que vous pouvez l’utiliser pour deux formats de barplots, qui demandent chacun d’adapter votre code.

Pour compter les occurences d’une variable, vous avez besoin de seulement spécifier en x la colonne sur laquelle effectuer le comptage.

  library(ggplot2)
  data("diamonds")
  ggplot(diamonds, aes(x = cut)) + 
    geom_bar()

Ici, {ggplot2} effectue, pour vous, le comptage du nombre d’occurences de chaque modalité de la variable.

Si le comptage de vos modalités est déjà dans le tableau, il vous faudra spécifier la variable de comptage en y, et ajouter stat = "identity" dans votre geom_bar.

  df <- data.frame(a = LETTERS, 
                   b = 1:26)
  ggplot(df, aes(a, b)) + 
    geom_bar(stat = "identity")

En savoir plus : Comment construire un graphique avec ggplot2.

Pas encore de commentaire, cliquez ici pour réagir.

Comment faire rbind et cbind dans le tidyverse ? bind_rows et bind_cols

0
dans manipulation de données, tidyverse
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading...

Plus de robustesse, plus de sécurité, nous avons nommé bind_rows et bind_cols !

Package du tidyverse, {dplyr} regorge d’outils ultra efficaces pour la manipulation de données. Parmi eux, deux petites fonctions qui, à première vue, ne payent pas de mine… et pourtant. bind_rows et bind_cols vous permettent d’effectuer l’équivalent de rbind et cbind mais sont plus fonctionnelles, et affichent des résultats plus propres et exploitables.

Commençons par créer deux tableaux. Si nous tentons de les juxtaposer avec la fonction de base rbind, nous aurons une erreur. À l’inverse, bind_rows fera le job, en peuplant les « colonnes manquantes » par des NA.

  library(dplyr)
  df1 <- data.frame(a = LETTERS, 
                    b = LETTERS)
  df2 <- data.frame(c = LETTERS, 
                    d = LETTERS)
  bind(df1, df2)
    Error in match.names(clabs, names(xi)) : 
      les noms ne correspondent pas aux noms précédents
  bind_rows(df1, df2)

Au tour de bind_cols. Pas de soucis dans nos deux exemples du dessus, en base ou avec la fonction de {dplyr}. Testons avec deux nouveaux tableaux.

  df3 <- data.frame(a = LETTERS[1:2], 
                    b = LETTERS[1:2])
  df4 <- data.frame(a = LETTERS[1:2], 
                    b = LETTERS[1:2])
 
  cbind(df3, df4) 
    a b a b
  1 A A A A
  2 B B B B
 
  bind_cols(df3, df4)
    a b a1 b1
  1 A A  A  A
  2 B B  B  B

Le réel plus de bind_cols ici ? La gestion des noms de colonne : alors que la fonction de {base} duplique les noms, la fonction de {dplyr} ajoute un chiffre, afin d’éviter le souci des colonnes dupliquées, qui pourront plus tard mettre en péril une analyse.

Pas encore de commentaire, cliquez ici pour réagir.

Comment créer un boxplot avec ggplot2 ? geom_boxplot()

0
dans graphique, tidyverse
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading...

Les boîtes à moustaches vous plaisent, mais R base vous lasse ? Tournez-vous vers {ggplot2} !

Si vous ne savez pas encore comment créer un graphique avec {ggplot2}, nous vous invitons à visiter notre page dédiée.

Ensuite, c’est tout simple, il suffit d’utiliser le geom geom_boxplot ! À l’intérieur de votre aes, x sera votre variable de groupe, et y la variable numérique à visualiser.

  library(ggplot2)
  data("DNase")
  ggplot(DNase, aes(Run, density)) + 
  geom_boxplot()

Comment lire une boîte à moustache ?

  • – Le gros trait central indique la médiane.
  • – Les deux extrémités de la boîte les 1er et 3e quartiles — 50% des observations se trouvent donc dans la boite.
  • – Les extrémités des moustaches sont calculées avec 1.5 fois l’espace interquartile.
  • – Les points sont les valeurs aberrantes.
  • Pas encore de commentaire, cliquez ici pour réagir.

    Comment modifier les colonnes qui répondent à une condition ? mutate_if()

    0
    dans manipulation de données, tidyverse
    - ça ne sert à rien -- c\'est interessant - (pas encore de vote)
    Loading...

    Parfois, on souhaite appliquer une fonction à plusieurs colonnes de notre tableau, en fonction d’une condition. Pour cela, direction mutate_if(), du package {dplyr}.

    Comme son nom l’indique, mutate_if effectue une modification si la condition est remplie. Les arguments sont :

  • – Un tableau de données
  • – La condition à remplir (le test effectué qui devra renvoyé TRUE)
  • – La transformation à effectuer.
  • Et pour comprendre par l’exemple :

      library(dplyr)
      data("iris")
      str(iris)
      'data.frame':	150 obs. of  5 variables:
     $ Sepal.Length: num  5.1 4.9 4.7 4.6 ...
     $ Sepal.Width : num  3.5 3 3.2 3.1 3 ...
     $ Petal.Length: num  1.4 1.4 1.3 1.5 ...
     $ Petal.Width : num  0.2 0.2 0.2 0.2 ...
     $ Species     : Factor w/ 3 levels   ...
      new_iris <- mutate_if(iris, is.numeric, as.factor)
      str(new_iris)
      'data.frame':	150 obs. of  5 variables:
     $ Sepal.Length: Factor w/ 35 levels ...
     $ Sepal.Width : Factor w/ 23 levels ...
     $ Petal.Length: Factor w/ 43 levels ...
     $ Petal.Width : Factor w/ 22 levels ...
     $ Species     : Factor w/ 3 levels  ...

    À noter : il est possible d’intégrer ses propres fonctions de transformation. Par exemple, si l’on veut les mesures d’iris en millimètres, plutôt qu’en centimètres.

      mutate_if(iris, is.numeric, function(x){x * 100})

    Pas encore de commentaire, cliquez ici pour réagir.

    Comment concaténer des chaînes de caractères ? str_c()

    0
    dans manipulation de données, tidyverse
    - ça ne sert à rien -- c\'est interessant - (pas encore de vote)
    Loading...

    Amoureux du paste de R base ? str_c du package {stringr} va vous plaire !

    Pourquoi utiliser str_c ? Pour sa simplicité, mais aussi sa puissance. La première raison de choisir cette fonction : développée dans {stringr}, elle suit la convention d’écriture de toutes les fonctions de ce package. Ainsi, pour concaténer des caractères (strings en anglais), il vous suffira d’appeler str_c.

    Comme avec la fonction de base, vous pouvez choisir le séparateur :

      library(stringr)
      str_c("une", "chaine", "de", "caractères", sep = " ")
      [1] "une chaine de caractères"
      str_c("une", "chaine", "de", "caractères", sep = "_")
      [1] "une_chaine_de_caractères"

    À noter : vous pouvez utiliser la fonction str_replace_na, pour remplacer les valeurs manquantes de la chaînes de caractères par un « NA ».

    À noter (bis) : pour concaténer un vecteur de chaîne de caractères, il faudra faire appel à l’argument collapse = "".

      chaine <- c("une", "chaine", "de", "caractères", "avec", NA)
      chaine
      [1] "une"        "chaine"     "de"         "caractères"
      [5] "avec"       NA  
      str_c(str_replace_na(chaine), collapse = " ")
      [1] "une chaine de caractères avec NA"

    Pas encore de commentaire, cliquez ici pour réagir.

    Comment remplacer une chaîne de caractères ? string_replace_all(df, « pattern », »replacement »)

    0
    dans manipulation de données, tidyverse
    - ça ne sert à rien -- c\'est interessant - (pas encore de vote)
    Loading...

    Vous avez besoin de manipuler des chaîne de caractères en toute simplicité ? Alors vous allez aimer le package stringr !

    Comme toutes les fonctions du tidyverse, la syntaxe est claire, rien que dans le nom. Pour remplacer toutes les chaînes de caractères, on va utiliser str_replace_all (string, replace, all), tout simplement.

    Autre règle suivie par cette fonction : le premier argument est l’objet qui contient la chaîne. Vous devrez coder : str_replace_all(df, pattern, replacement). Par exemple :

      library(stringr)
      str_replace_all("Une chaîne de caractères", pattern = "Une", replacement = "1")
      [1] "1 chaîne de caractères"

    À noter : l’équivalent str_replace, qui ne remplacera que le premier élément qu’il rencontrera.

      str_replace("Une chaîne de caractères et une autre", pattern = "Une", replacement = "1")
      [1] "1 chaîne de caractères et une autre"

    Pas encore de commentaire, cliquez ici pour réagir.

    Comment sélectionner des colonnes qui commencent par une suite de caractères ? select( starts_with())

    0
    dans manipulation de données, tidyverse
    - ça ne sert à rien -- c\'est interessant - (pas encore de vote)
    Loading...

    Vous avez besoin de sélectionner des colonnes en fonction de leur nom ? Faites appel à select, fonction du package dplyr. Vous trouvez laborieux de taper à la main l’ensemble des noms des colonnes que vous souhaitez ? Il y a un paramètre pour ça !

    Si vos noms de colonnes suivent un pattern défini, vous pouvez les sélectionner avec starts_with().

    library(dplyr)
    data("who")
    select(who, starts_with("newrel"))

    À noter que vous pouvez également utiliser ends_with(), matches() ou encore contains().

    Pas encore de commentaire, cliquez ici pour réagir.

    Comment rédiger avec RMarkdown ? Quelques commandes utiles

    0
    dans programmer avec R, tidyverse
    - ça ne sert à rien -- c\'est interessant - (pas encore de vote)
    Loading...

    Vous souhaitez rédiger des documents qui contiennent du code, des résultats de console ou des graphiques ? Alors Mardown est fait pour vous !

    Langage HTML simplifié, Markdown est idéal pour communiquer, à toutes les étapes de votre analyse de données. Carnets de notes pour vous, outils de transmission à vos collègues, ou encore bilans d’analyse à destination d’un grand public, les documents Markdown sont un véritable atouts, à mettre dans la besace de tous les utilisateurs de R. Et pour cause, sa simplicité va vous bluffer !

    Pour créer un nouveau document en RMarkdown, rendez-vous sur l’onglet « File / New File » de RStudio. Puis, sélectionnez « R Markdown ». Dans cette nouvelle fenêtre, vous pouvez rédiger votre présentation, en suivant les conventions de balisage suivantes :

     # Titre de niveau 1
    ## Titre de niveau 2
    ### Titre de niveau 3
    #### Titre de niveau 4 
     
    _Un texte en italique_
    __Un texte en gras__
     
    [Un lien vers](www.ce-site.com)
    ![Une image située](à/cet/emplacement.png) 
     
    > Une citation
     
    * Une liste
    * avec plusieurs items
     + et des sous-items
     
    ```{r}
    Une portion de code R 
    ```

    Et pour en savoir plus sur les commandes, rendez-vous sur la Cheatsheet officielle !

    Pas encore de commentaire, cliquez ici pour réagir.
    Formation logiciel R