La fonction ddply(), faisant partie du package plyr, permet d’appliquer une fonction à des subdivisions d’un 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), summarize,       mean = round(mean(age), 2),       sd = round(sd(age), 2)) # On obtient la moyenne et l’écart type associé à l’âge en fonction du groupe ddply(dfx, .(group, sex), summarize,    Read More →

iris iris_bis <- iris[,-2] # On supprime la 2eme colonne iris_ter <- iris[-20,] # On supprime la 20eme ligne Pour le faire dans le cadre du {tidyverse}, reportez-vous à cette page : https://abcdr.thinkr.fr/comment-supprimer-une-colonne-ou-une-ligne-dans-un-dataframe-avec-le-tidyverse-et-dplyr/Read More →

Il est parfois utile d’ajouter un niveau, absent à l’intérieur du facteur mais qui est susceptible de devoir être ajouter par la suite. x <- factor(c(« A », »A », »B », »A », »C », »A », »B », »A », »B », »B », »C », »A », »C »)) levels(x) <- c(levels(x), »D ») # On ajoute le niveau “D” au facteur x   On obtient :  x [1] A A B A C A B A B B C A C Levels: A B C DRead More →

Les données manquantes empêchent R de réaliser des opérations comme la moyenne ou la somme appliquée à un vecteur par exemple. Pour que le logiciel puisse les réaliser il est nécessaire d’ajouter le paramètre na.rm afin que les données manquantes soient prises en compte en tant que telles. x<-c(1,NA,4.3,8,NA,9.5,3.1)      # x est un vecteur contenant des données manquantes sum(x)                                # Renvoie « NA », la fonction sum() ne prend pas en compte les données manquantes sum(x, na.rm=TRUE)              # Renvoie la somme. Le paramètre « na.rm »Read More →

La fonction lapply() permet d’appliquer une fonction à chaque élément d’une liste. Le premier argument est une liste sur laquelle on veut appliquer la fonction placée en deuxième argument (mean, sum, sd, function(x)…). x <- list(a = 1:7, b = runif(n = 5, min = 10, max = 20), booleen = c(TRUE,FALSE,FALSE,TRUE)) y<-lapply(x,mean) #de manière plus générale, cela équivaut à : y<-apply(x,function(x) mean(x)) # on ajoute function(x) devant une les fonctions non-prédéfinies dans R z<-sapply(x,mean) # la fonction sapply est équivalente à lapply # mais lapply retourne une liste tandis que la fonction sapply retourne un vecteur numérique, une matrice ou quand cela n’est pasRead More →

Si l’on veut sélectionner un sous-ensemble d’un jeu de données à partir d’une condition simple étendue, d’une condition multiple exclusive, d’une condition multiple inclusive, d’une condition multiple exclusive étendue, ou d’une condition multiple inclusive étendue, il faut utiliser les opérateurs logiques OU et/ou ET.Dans R, le ET s’écrit « & », et le OU s’écrit « | ». Une condition simple porte sur une seule colonne.Une condition multiple porte sur plusieurs colonnes à la fois (comme pour les régressions).Une condition étendue porte sur l’union de plusieurs modalités/critères au sein d’une même colonne : elle utilise l’opérateur logique OU.Une condition exclusive est une condition multiple quiRead More →

Une petite fonction sans prétention qui vous permettra de calculer simplement la SEM de tout jeu de donnée. sem<-function(x,digits= 3,na.rm=FALSE){if(na.rm==TRUE) {x<-x[!is.na(x)]}return(round(sd(x)/sqrt(length(x)),digits))} Exemple : data<-c(4,6,7,8,34,67,77,4,4) #soit un jeu de donnée sem(data)[1] 9.736sem(data, digits = 4) #nous pouvons tout à fait spécifier le nombre de chiffre après la virgule à considérer [1] 9.7355Read More →

Afin de tranferer un jeu de données, une liste et à peu pret n’importe quel type d’objet sans devoir envoyer un fichier (csv, Rdata …) vous pouvez utiliser la fonction dput, qui vous donnera la transcription en ligne de code de votre objet. test<-structure(list(Sepal.Length = c(4.7, 4.9, 6.9, 6.3, 6.4, 7.7, 5.1, 5.4, 5.4, 6.3), Species = structure(c(1L, 1L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 2L), .Label = c(« setosa », « versicolor », « virginica »), class = « factor »)), .Names = c(« Sepal.Length », « Species »), row.names = c(30L, 38L, 140L, 147L, 116L, 119L, 40L, 32L, 17L, 88L), class = « data.frame »)dput(test)dput(iris)dput(summary(lm(1~1)))Read More →