Piocher des données dans un tableau à double entrée ?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Sylvain Gaudin
Messages : 25
Enregistré le : 10 Jan 2017, 06:41

Piocher des données dans un tableau à double entrée ?

Messagepar Sylvain Gaudin » 19 Juin 2023, 18:54

Bonjour,

Je possède un tableau à double entrée (df) :

Code : Tout sélectionner

Texture <- c("S","SL","SA" ,"LLS")
S <- c("R" , "V", "V", "E")
SL <- c("V", "R", "V", "V")
SA <- c("V", "V", "R","E")
LLS <- c("E","V","E", "R")

df <- data.frame(Texture, S, SL, SA, LLS)

Je souhaiterais remplir une nouvelle colonne (Col3) d'un autre tableau (df2),

Code : Tout sélectionner

Col1 <- c("S", "SL", "LLS", "SA", "SL", "SL")
Col2 <- c("SA", "SL", "SL","S", "S", "LLS")

df2 <- data.frame(Col1, Col2)

en allant récupérer la valeur située à l'intersection de la ligne ayant la valeur de col1 et de la colonne ayant la valeur de col2. Par exemple, la première ligne de Col3 serait "V", la deuxième "R", la troisième "V"...

Merci pour votre aide.

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Piocher des données dans un tableau à double entrée ?

Messagepar Logez Maxime » 20 Juin 2023, 06:25

Bonjour,

Tu as plusieurs façons de faire comme toujours, en voilà une :

Code : Tout sélectionner

df[cbind(match(df2[,1], df$Texture), match(df2[,2], colnames(df)))]

Après si df avait pour nom de ligne les valeurs de Texture tu pourrais faire :

Code : Tout sélectionner

df3 <- df
rownames(df3) <- df3[,1]
df3 <- df3[,-1]
df3[as.matrix(df2)]
Cordialement,
Maxime

EDIT : j'avais oublié la dernière ligne.

Sylvain Gaudin
Messages : 25
Enregistré le : 10 Jan 2017, 06:41

Re: Piocher des données dans un tableau à double entrée ?

Messagepar Sylvain Gaudin » 20 Juin 2023, 08:28

Merci beaucoup, ça fonctionne !
(Et ça me donne des idées pour d'autres traitements de données...)


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron