Importation structure de données

Umaru <- read.csv("C:/Users/mallah.s/Desktop/DU_Stat_ISPED/Exo_Tuto_R/Umaru.csv", sep=";", stringsAsFactors=TRUE)
um<-Umaru
View(um)
um<-transform(um,IVHX=factor(IVHX),RACE=factor(RACE),TREAT =factor(TREAT),SITE =factor(SITE),DFREE =factor(DFREE))
str(um)
## 'data.frame':    575 obs. of  9 variables:
##  $ ID     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ AGE    : int  39 33 33 32 24 30 39 27 40 36 ...
##  $ BECK   : Factor w/ 68 levels "0","1","10","11",..: 66 45 3 23 58 43 19 3 37 30 ...
##  $ IVHX   : Factor w/ 3 levels "1","2","3": 3 2 3 3 1 3 3 3 3 3 ...
##  $ NDRUGTX: int  1 8 3 1 5 1 34 2 3 7 ...
##  $ RACE   : Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 1 1 ...
##  $ TREAT  : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 2 2 2 2 ...
##  $ SITE   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
##  $ DFREE  : Factor w/ 2 levels "0","1": 1 1 1 1 2 1 2 1 1 1 ...

Manipulation de données

Nombre de ligne du tableau

nrow(um)
## [1] 575

Score de Beck moyen à l’inclusion dans l’étude

transformation de la donnée BECK de facteur à numerique

um$BECK<-as.numeric(um$BECK)

calcul de la moyenne, pour etre sure d’enlever les valeurs manquantes on met na.rm=“TRUE

mean(um$BECK,na.rm ="True")
## [1] 28.60976

pour enlever les lignes avec des donées manquantes, j’ai dabord fait summary(um) pour identifier les variables ayant des données manquantes ensuite identifier les lignes et j’ai utilisé um2<-um[-c(31,36,55,114,564)]. j’e’ai trouvé cette méthode longue surtout dans le cas ou il y’aurait beaucoup plus de Na.

J’ai trouvé sur le net la fonction which(is.na(um),arr.ind=TRUE)

###methode 1a

um2<-um[-c(31,36,55,114,564),]
nrow(um2)
## [1] 570

####Méthode 2a

um3<-na.omit(um)
nrow(um3)
## [1] 570

cela nous donne 570 pour ces deux methodes, quand on utilise summary nous ne voyons plus de NA.

###methode 3

um1<-which(is.na(um),arr.ind=TRUE)[,1]
umsNa<-um[-um1,]
summary(umsNa)
##        ID             AGE             BECK       IVHX       NDRUGTX      
##  Min.   :  1.0   Min.   :20.00   Min.   : 1.00   1:223   Min.   : 0.000  
##  1st Qu.:147.2   1st Qu.:27.00   1st Qu.:11.25   2:107   1st Qu.: 1.000  
##  Median :289.5   Median :32.00   Median :25.00   3:240   Median : 3.000  
##  Mean   :289.1   Mean   :32.36   Mean   :28.41           Mean   : 4.537  
##  3rd Qu.:431.8   3rd Qu.:37.00   3rd Qu.:40.00           3rd Qu.: 6.000  
##  Max.   :575.0   Max.   :56.00   Max.   :68.00           Max.   :40.000  
##  RACE    TREAT   SITE    DFREE  
##  0:425   0:285   0:396   0:423  
##  1:145   1:285   1:174   1:147  
##                                 
##                                 
##                                 
## 
nrow(umsNa)
## [1] 570

Séléction d’individus et de variables

Créer une table, nommée siteA_treat1 ne contenant que les sujets ayant eu le programme de traitement souple et une durée de traitement longue

siteA_treat1<-subset(um3,um3$TREAT=="1",um3$SITE=="0",select=c(ID,AGE,BECK,IVHX,NDRUGTX,RACE,TREAT,SITE,DFREE))
## Warning in if (drop) {: la condition a une longueur > 1 et seul le premier
## élément est utilisé
siteA_treat1<-siteA_treat1[,-c(7,8)]

Ajout de variable

Ajouter une variable score à la table um

um3<- transform(um3,score=152-AGE*1.88+BECK*0.8)

Ajouter une variable DROG qui vaut 0 pour les individus sans utilisation de drogue par voie intraveineuse et avec aucun traitement anti-drogue précédent, et 1 pour les autres individus

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.5
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
um3$DROG <- with(um3, ifelse( (NDRUGTX == 0) & (IVHX=="1"),0,1))

nstallation de epiR avec la commande “install.packages(”epiR”)”

library(epiR)
## Loading required package: survival
## Warning: package 'survival' was built under R version 4.0.5
## Package epiR 2.0.40 is loaded
## Type help(epi.about) for summary information
## Type browseVignettes(package = 'epiR') to learn how to use epiR for applied epidemiological analyses
## 
epi.descriptives(um3$score)
## $arithmetic
##     n    mean       sd   q25    q50    q75  lower   upper   min   max na
## 1 570 113.897 19.71004 98.76 111.96 127.99 79.943 153.932 67.12 165.6  0
## 
## $geometric
##     n     mean        sd   q25    q50    q75    lower   upper   min   max na
## 1 570 112.2016 0.1739436 98.76 111.96 127.99 4.381313 5.03651 67.12 165.6  0
## 
## $symmetry
##    skewness   kurtosis
## 1 0.2934127 -0.4691413

Representation graphique

##tracer un graphique contenant deux boites à moustaches du score de BECK, une pour les individus ayant eu une durée de traitement longue et une autre pour ceux ayant eu une durée de traitement courte.

boxplot(um3$BECK~um3$TREAT,col=c("lightpink","lightblue"), 
        main=" ", 
        ylab="Score dépression de BECK", xlab="durée du traitement à l'inclsuion",sub=paste("Score de dépression de BECK selon la durée du traitement à l'inclusion"),col.sub="blue")

##Reproduire le graphique

levels(um3$IVHX)[1]<-"jamais"
levels(um3$IVHX)[2]<-"ancienne"
levels(um3$IVHX)[3]<-"récente"
table(um3$IVHX)
## 
##   jamais ancienne  récente 
##      223      107      240
prop.table(table(um3$IVHX))
## 
##    jamais  ancienne   récente 
## 0.3912281 0.1877193 0.4210526
prop.table(table(um3$IVHX))*100
## 
##   jamais ancienne  récente 
## 39.12281 18.77193 42.10526
b<-prop.table(table(um3$IVHX))*100

barplot(b, main="Répartition des individus en fonction de leur histoire \n d'utilisation de drogues par voie intraveineuse",xlab="Histoire d'utilisation",ylab="Pourcentage",col=c("red","green","blue"))