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
  • Test
  • tidyverse
  • Transformation de données


Votre recherche:

Tibble ou data.frame ?

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

Commençons par un point important : un tibble est un data.frame… mais un data.frame amélioré !

Élément central du tidyverse, cette forme diffère des data.frame natifs dans deux comportements :

  • l’affichage : les tibbles s’adaptent à l’écran, et chaque colonne affiche son type.
  • la sélection : elle est plus stricte dans un tibble — elle ne se fait jamais en partial match, et un message d’erreur s’affiche lorsque vous sélectionner un élément qui n’existe pas.
Pour créer un tibble, deux solutions : la conversion depuis un data.frame, ou la création à la main.
library(tibble)
data("swiss")
as_tibble(swiss)
 
tibble(x = 1:4, 
       y = 5:8)
Pas encore de commentaire, cliquez ici pour réagir.

Comment créer une nouvelle colonne dans un data.frame ? mutate()

0
dans tidyverse, Transformation de données
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading ... Loading ...
Pour ajouter une colonne, direction la fonction mutate. Avec celle-ci, vous pouvez insérer un objet externe au tableau (par exemple une liste), ou le résultat de l’opération sur une ou plusieurs colonnes.
data("faithfuld")
library(dplyr)
mutate(faithful, index= 1:nrow(faithful), er.wa = eruptions / waiting)
Pas encore de commentaire, cliquez ici pour réagir.

Comment sélectionner des colonnes dans un data.frame ? select()

0
dans manipulation de données, tidyverse
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading ... Loading ...
Votre jeu de données est trop grand ? Vous avez trop de colonnes ? Vous pouvez en sélectionner très simplement avec la fonction select() de dplyr.

Comme toutes les fonctions du tidyverse, le premier argument est l’objet contenant le jeu de données. Puis, il suffit d’entrer le nom des colonnes à conserver.

library(dplyr)
data("smiths")
select(smiths, subject, age)
Pas encore de commentaire, cliquez ici pour réagir.

Comment fusionner les différentes parties d’un array dans un data.frame ? : melt

0
dans Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +2 sur 2 votes)
Loading ... Loading ...

La fonction melt(), qui fait partie du package reshape2, permet de regrouper les différentes parties d’un array dans un data.frame.

 
library(reshape)
 
a <- array(c(1:11, NA), c(2,2,3),dimnames=list(NULL, NULL, c("A","B","C")))
a
, , A
 
     [,1] [,2]
[1,]    1    3
[2,]    2    4
 
, , B
 
     [,1] [,2]
[1,]    5    7
[2,]    6    8
 
, , C
 
     [,1] [,2]
[1,]    9   11
[2,]   10   NA
 
 
melt(a, na.rm = TRUE) #On fusionne A, B et C
#na.rm permet d'enlever les "NA" du jeu de données
 
melt(a,na.rm = TRUE, varnames=c("abscisses","ordonnées","variables"))
#On fait la même chose mais cette fois en attribuant aux colonnes les noms que l'on désire
 
   

On obtient :

 
melt(a,na.rm = TRUE, varnames=c("abscisses","ordonnées","variables"))
   abscisses ordonnées variables value
1          1         1         A     1
2          2         1         A     2
3          1         2         A     3
4          2         2         A     4
5          1         1         B     5
6          2         1         B     6
7          1         2         B     7
8          2         2         B     8
9          1         1         C     9
10         2         1         C    10
11         1         2         C    11
 
   

Proposé par Helene F.

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

Comment obtenir un data.frame à partir d’un tableau croisé ? : as.data.frame

0
dans Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 3 votes)
Loading ... Loading ...

La fonction as.data.frame() permet de passer d’un tableau croisé à un data.frame.

 

 
sechage <- factor(c(rep("lent",5),rep("rapide",5)))
marque <- factor(c(rep("Mer",3),rep("Cim",3),rep("vex",4)))
 
ciment <- cbind.data.frame(sechage,marque)
 
tab_croise<-table(ciment$sechage,ciment$marque) #On crée un tableau croisé
 
tab_croise
         Cim Mer vex
  lent     2   3   0
  rapide   1   0   4
 
 
as.data.frame(tab_croise) # On reconvertie le tableau croisé en data.frame
 
 

On obtient :

 
as.data.frame(tab_croise)
    Var1 Var2 Freq
1   lent  Cim    2
2 rapide  Cim    1
3   lent  Mer    3
4 rapide  Mer    0
5   lent  vex    0
6 rapide  vex    4
 
 

Proposé par Helene F.

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

Comment fusionner deux data.frame ? : merge

2
dans fonctions utiles, manipulation de données, Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +4 sur 4 votes)
Loading ... Loading ...

La fonction merge() permet de fusionner deux data.frame ayant une variables en commun ainsi que des données complémentaires.

 
age <- c(11,13,14)
prenom <- c("simon","nicolas","cyril")
moyenne <- c(12.1,14.2,8.6)
classe <- factor(c("6eme","4eme","3eme"))
 
eleves <- cbind.data.frame(age,prenom,classe, moyenne)
#On colle les données dans un data.frame
 
nb_elev <- c(29,32,36,33)
moy_classe <- c(10.2,11.3,10.6,10.9)
caract_classe <- cbind.data.frame(c("6eme","5eme","4eme","3eme"),nb_elev,moy_classe)
#On colle les données dans un data.frame
 
names(caract_classe) <- c("classe","effectif","moyenne de la classe")
#On attribue à chaque variable le nom que l'on désire
 
merge(eleves,caract_classe,by="classe") 
#On fusionne les données dans un data.frame
#La clé commune aux données est la variable "classe"
#En effet, la variable commune aux data.frame « eleves » et « caract_classe » est la variable classe.
 

 

On obtient :

 

 
 
merge(eleves,caract_classe,by="classe") #La clé est la variable "ville"
  classe age  prenom moyenne effectif moyenne de la classe
1   3eme  14   cyril     8.6       33                 10.9
2   4eme  13 nicolas    14.2       36                 10.6
3   6eme  11   simon    12.1       29                 10.2
 
 

 

Proposé par Helene F.

Déjà 2 commentaires. Cliquez ici pour réagir.

Comment coller des colonnes ou des lignes pour obtenir un data.frame ? : cbind.data.frame, rbind.data.frame

0
dans fonctions utiles, manipulation de données
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 3 votes)
Loading ... Loading ...

La fonction cbind.data.frame() permet de coller des colonnes et d’obtenir un data.frame.

 
sechage <- factor(c(rep("lent",5),rep("rapide",5)))
marque <- factor(c(rep("Mer",3),rep("Cim",3),rep("vex",4)))
#On crée deux facteurs que l'on souhaite coller
 
ciment <- cbind.data.frame(sechage, marque) #On colle ces deux facteurs
 

De la même manière, la fonction rbind.data.frame() permet de coller des lignes et d’obtenir un data.frame

Proposé par Helene F.

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

Comment passer d’un format Wide à un format Long pour un data.frame ? : melt

0
dans fonctions utiles, Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...

La fonction melt(), qui fait partie du package reshape2, permet de modifier le format des données en fonction d’une ou plusieurs variables de référence (id). Ces variables correspondent en général aux variables qualitatives du data.frame.

 
library(reshape2) # On charge le package reshape2
airquality
aqm <- melt(airquality, id=c("Month", "Day"), na.rm=TRUE)  
 aqm  
 
 

Proposé par Helene F.

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

Comment passer d’un format Wide à un format Long pour un data.frame ? : reshape

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

La fonction reshape() permet de modifier le format des données en fonction de la variable qu’on associe au paramètre « direction ».

 
df <- data.frame(id = rep(1:4, rep(2,4)),
                 visit = I(rep(c("Before","After"), 4)),
                 x = rnorm(4), y = runif(4))
df # df est un data.frame de dimension 8 X 4 avec des répétitions
 
# On simplifie le tableau en enlevant les répétitions
df2=reshape(df, timevar = "visit", idvar = "id", direction = "wide")
 
# Le paramètre « direction » associé à la valeur « long » permet de récupérer le format original des données.
reshape(df2, timevar = "visit", idvar = "id", direction = "long")
 
 

Proposé par Helene F.

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

Comment appliquer une fonction à une ou plusieurs colonnes d’un data.frame et ajouter ces nouvelles données à ce data.frame ? : ddply()

0
dans fonctions utiles, manipulation de données, Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...

La fonction ddply(), faisant partie du package plyr, permet d’appliquer une fonction à une ou plusieurs colonnes d’un data.frame en fonction des modalités d’une ou deux variables, et d’ajouter ces données à ce data.frame.

 
library(plyr)        # On charge le package plyr
#On construit un data.frame :
dfx <- data.frame(
    group <- c(rep('A', 8), rep('B', 15), rep('C', 6)),
    sex <- sample(c("M", "F"), size = 29, replace = TRUE),
    age <- runif(n = 29, min = 18, max = 54))
 
ddply(dfx, .(group, sex), mutate,
    mean = round(mean(age), 2),
    sd = round(sd(age), 2))
# On obtient la moyenne et l'écart type de l’âge en fonction du groupe et du sexe
# et on ajoute une colonne “mean” et “sd” au data.frame dfx.
 

Proposé par Helene F.

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