Modérateur : Groupe des modérateurs
Code : Tout sélectionner
CheikhKane_fct <- function(tab,n1,n0,fac01){
##n1 : nombre de 1 souhaité
##n0 : nombre de 0 souhaité
##fac01 : une variable contenant les 0 et 1 ayant autant de valeurs que
## le nombre de ligne du tableau tab
tab0 <- subset(tab,fac01==0) #sélectionne les lignes de tab qui ont un "0" comme équivalent dans fac01
tab1 <- subset(tab,fac01==1) #sélectionne les lignes de tab qui ont un "0" comme équivalent dans fac01
if(n1>nrow(tab1)) stop("nombre de 1 souhaité trop grand") #cf ?"if ou ?"Syntax" pour des détails sur ces commandes
if(n0>nrow(tab0)) stop("nombre de 0 souhaité trop grand")
newtab0 <- tab0[sample(1:nrow(tab0),n0),] #tirage aléatoire de n0 lignes
newtab1 <- tab1[sample(1:nrow(tab1),n1),] #tirage aléatoire de n1 lignes
mysampledataset <- rbind(newtab0,newtab1)
return(mysampledataset)
}
Code : Tout sélectionner
dataset <- matrix(1:60,nr=20,nc=3) #une matrice de dimension [20,3]
dataset
[,1] [,2] [,3]
[1,] 1 21 41
[2,] 2 22 42
[3,] 3 23 43
[4,] 4 24 44
[5,] 5 25 45
[6,] 6 26 46
[7,] 7 27 47
[8,] 8 28 48
[9,] 9 29 49
[10,] 10 30 50
[11,] 11 31 51
[12,] 12 32 52
[13,] 13 33 53
[14,] 14 34 54
[15,] 15 35 55
[16,] 16 36 56
[17,] 17 37 57
[18,] 18 38 58
[19,] 19 39 59
[20,] 20 40 60
x01 <- rep(c(0,1),each=10)
x01<-sample(x01,20) #un vecteur de 20 valeurs 0 ou 1, et une utilisation de sample() pour mélanger un vecteur
test <- CheikhKane_fct(tab=dataset,n1=2,n0=3,fac01=x01) #on veut un jeu de donnée ayant deux "1" et trois "0"
test
[,1] [,2] [,3]
[1,] 18 38 58
[2,] 9 29 49
[3,] 6 26 46
[4,] 2 22 42
[5,] 16 36 56
Nicolas Péru a écrit :Voilà une possibilité :Code : Tout sélectionner
CheikhKane_fct <- function(tab,n1,n0,fac01){
##n1 : nombre de 1 souhaité
##n0 : nombre de 0 souhaité
##fac01 : une variable contenant les 0 et 1 ayant autant de valeurs que
## le nombre de ligne du tableau tab
tab0 <- subset(tab,fac01==0) #sélectionne les lignes de tab qui ont un "0" comme équivalent dans fac01
tab1 <- subset(tab,fac01==1) #sélectionne les lignes de tab qui ont un "0" comme équivalent dans fac01
if(n1>nrow(tab1)) stop("nombre de 1 souhaité trop grand") #cf ?"if ou ?"Syntax" pour des détails sur ces commandes
if(n0>nrow(tab0)) stop("nombre de 0 souhaité trop grand")
newtab0 <- tab0[sample(1:nrow(tab0),n0),] #tirage aléatoire de n0 lignes
newtab1 <- tab1[sample(1:nrow(tab1),n1),] #tirage aléatoire de n1 lignes
mysampledataset <- rbind(newtab0,newtab1)
return(mysampledataset)
}
un exemple d'utilisation :Code : Tout sélectionner
dataset <- matrix(1:60,nr=20,nc=3) #une matrice de dimension [20,3]
dataset
[,1] [,2] [,3]
[1,] 1 21 41
[2,] 2 22 42
[3,] 3 23 43
[4,] 4 24 44
[5,] 5 25 45
[6,] 6 26 46
[7,] 7 27 47
[8,] 8 28 48
[9,] 9 29 49
[10,] 10 30 50
[11,] 11 31 51
[12,] 12 32 52
[13,] 13 33 53
[14,] 14 34 54
[15,] 15 35 55
[16,] 16 36 56
[17,] 17 37 57
[18,] 18 38 58
[19,] 19 39 59
[20,] 20 40 60
x01 <- rep(c(0,1),each=10)
x01<-sample(x01,20) #un vecteur de 20 valeurs 0 ou 1, et une utilisation de sample() pour mélanger un vecteur
test <- CheikhKane_fct(tab=dataset,n1=2,n0=3,fac01=x01) #on veut un jeu de donnée ayant deux "1" et trois "0"
test
[,1] [,2] [,3]
[1,] 18 38 58
[2,] 9 29 49
[3,] 6 26 46
[4,] 2 22 42
[5,] 16 36 56
Code : Tout sélectionner
CheikhKane_fct <- function(tab,n0,n1,fac01){
##n1 : nombre de 1 souhaité
##n0 : nombre de 0 souhaité
##fac01 : une variable contenant les 0 et 1 ayant autant de valeurs que
## le nombre de ligne du tableau tab
if(n1>sum(fac01==1)) stop("nombre de 1 souhaité trop grand") #cf ?"if ou ?"Syntax" pour des détails sur ces commandes
if(n0>sum(fac01==0)) stop("nombre de 0 souhaité trop grand")
auxi <- c(sample(which(fac01==1),n1),sample(which(fac01==0),n0))
auxi <- sample(auxi)
mysampledataset <- tab[auxi,]
return(mysampledataset)
}
test
Individus Poids Classe
1 individu1 65.5 0
2 individu2 45.8 0
3 individu3 35.0 1
4 individu4 50.0 0
5 individu5 40.0 1
6 individu6 39.0 1
7 individu7 78.0 0
CheikhKane_fct(test,2,1,test$Classe)
Individus Poids Classe
6 individu6 39.0 1
2 individu2 45.8 0
7 individu7 78.0 0
CheikhKane_fct(test,2,1,test$Classe)
Individus Poids Classe
7 individu7 78.0 0
3 individu3 35.0 1
2 individu2 45.8 0
Cheikh Kane a écrit :Avez-vous des indications à me donner pour coder des arbres de décision avec R?
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité