IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

D'une matrice valeur vers une matrice Indec


Sujet :

R

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 32
    Points : 27
    Points
    27
    Par défaut D'une matrice valeur vers une matrice Indec
    Bonjour à tous.

    A partir d'une matrice contenant des valeurs numérique entre 1 et 100 au maximum .

    1 - je trouve la valeur maximum contenue dans cette premier matrice, qui me sert pour generer le nombre de colonne de la matrice index.

    2 - je fait de meme pour les lignes.

    3 - comment puis je remplir ensuite la matrice index / ligne par ligne , avec pour resultat 1 en colonne pour chaque element par ligne de la matrice valeurs ?

    si la matrice valeur en premier ligne contient [1,1] = 10 // matrice index[ligne1:10] = 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #
    # Matrice vers Matrice binaire
    #
     
    # 1 - Exemple Matrice de BASE
    (mat1 <- matrix(sample(1:100, 100, rep = FALSE), 10, 5))
     
     
     
    # 2 - Matrice Binaire Creation
     
    (ligne <- nrow(mat1));(colo <- max(mat1))
     
    indice <-  matrix(0,ligne,colo)
     
    #View(indice)
    le Resultat ressemblerait a cela :

    Nom : R Resulte..jpg
Affichages : 123
Taille : 117,8 Ko


    Merci à vous et bon samedi

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Transposition
    Bonjour,

    Une proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    set.seed(12345)
    RNGkind(sample.kind = "Rejection") # cf. https://community.rstudio.com/t/getting-different-results-with-set-seed/31624
    mat1 <- matrix(sample(1:20, 16, rep = FALSE), 4, 4)
    mat1
    #>      [,1] [,2] [,3] [,4]
    #> [1,]   14   18   17   15
    #> [2,]   19    8   13   10
    #> [3,]   16    2    7   12
    #> [4,]   11    6    1    9
    df1 <- as.data.frame(mat1)
    names(df1) <- c("C1","C2","C3","C4")
    df1$num <- 1:nrow(df1)
    df1 <- reshape2::melt(df1,
                          id.vars=c("num"),
                          mesure.vars=c("C1":"C4"),
                          variable.name="var",
                          value.name="value")
    df1
    #>    num var value
    #> 1    1  C1    14
    #> 2    2  C1    19
    #> 3    3  C1    16
    #> 4    4  C1    11
    #> 5    1  C2    18
    #> 6    2  C2     8
    #> 7    3  C2     2
    #> 8    4  C2     6
    #> 9    1  C3    17
    #> 10   2  C3    13
    #> 11   3  C3     7
    #> 12   4  C3     1
    #> 13   1  C4    15
    #> 14   2  C4    10
    #> 15   3  C4    12
    #> 16   4  C4     9
    df1$value <- ifelse(df1$value < 10, paste0("0",df1$value), df1$value)
    df1$value <- paste0("V",df1$value)
    mat1
    #>      [,1] [,2] [,3] [,4]
    #> [1,]   14   18   17   15
    #> [2,]   19    8   13   10
    #> [3,]   16    2    7   12
    #> [4,]   11    6    1    9
    reshape2::acast(df1, num ~ value, length, value.var="value")
    #>   V01 V02 V06 V07 V08 V09 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19
    #> 1   0   0   0   0   0   0   0   0   0   0   1   1   0   1   1   0
    #> 2   0   0   0   0   1   0   1   0   0   1   0   0   0   0   0   1
    #> 3   0   1   0   1   0   0   0   0   1   0   0   0   1   0   0   0
    #> 4   1   0   1   0   0   1   0   1   0   0   0   0   0   0   0   0
     
    # Created on 2020-08-08 by the [reprex package](https://reprex.tidyverse.org) (v0.3.0)
    Cordialement,

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    mgdondon

    Merci pour cette solution , judicieuse utilisation des librairies reshape & reshape2.

    Je vais étudier de tres pres leur fonctionnalités.


  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut package reshape2
    Bonjour,

    Merci pour votre retour. En fait le package reshape2 remplace le package reshape et contient aussi la fonction melt(). Je corrige mon premier message en conséquence.

    reshape2: Flexibly Reshape Data: A Reboot of the Reshape Package

    Flexibly restructure and aggregate data using just two functions: melt and 'dcast' (or 'acast').
    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/08/2010, 20h30
  2. Transposition de valeurs vers une liste.
    Par H.ile dans le forum SQL
    Réponses: 4
    Dernier message: 15/06/2010, 10h42
  3. [AC-2003] Transfère valeur vers une autre table
    Par Otis07 dans le forum VBA Access
    Réponses: 6
    Dernier message: 10/05/2009, 14h12
  4. Passage d'une Valeur vers un WebService
    Par LaDeveloppeuse dans le forum ASP.NET
    Réponses: 16
    Dernier message: 11/06/2007, 12h02
  5. envoyer une valeur vers le Com
    Par aliwassem dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/12/2005, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo