vecteurs manquant

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

sim moumné
Messages : 3
Enregistré le : 22 Juil 2017, 11:15

vecteurs manquant

Messagepar sim moumné » 25 Juil 2017, 12:11

bonjour,
d’après un fichier.csv de 1 à 10 que j'ai nommée (ta1);
j'ai fait un data.fram qui contient plusieurs fois les même chiffres,
exemple: (1.1.4.7.7.8.8.9.9)
donc on remarque qu'il manque les chiffres 2.3.5.6.et 10.

pour connaître la quantités des vecteurs qui sont utilisées dans l'exemple (1.4.7.8.9) ,
j'ai fait
table(unlist(ta1[,5:1])) qui me donne
1.4.7.8.9
2 1 2 2 2
donc j'ai bien deux fois le chiffre 1,
une fois le chiffre 4,
deux fois le chiffre 7,
deux fois le chiffre 9.
comment ? je peut faire comme code ? pour que R me donne une liste ou un fichier des chiffres manquants c-a-d (2.3.5.6 et 10)
d'avance merci
cordialement

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: vecteurs manquant

Messagepar Charles Marcucci » 25 Juil 2017, 12:23

Bonjour

Déjà utilise la base code pour poster ça sera plus clair.
Cree un vecteur avec les valeur que tu veux vérifier

Code : Tout sélectionner

vec<-c(1,2,3,4,5,6,7,8,9,10)

puis sur ton vecteur tu prend que les valeurs unique en faisant

Code : Tout sélectionner

unique
puis la fonction

Code : Tout sélectionner

setdiff(x,y)
qui te donnera les éléments de X qui ne sont pas dans Y .

Voila

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: vecteurs manquant

Messagepar Serge Rapenne » 25 Juil 2017, 12:35

Bonjour,

une autre possibilité :

Code : Tout sélectionner

dta<-c(1,1,4,7,7,8,8,9,9)
l_valeur<-1:10
 l_valeur[!l_valeur %in% unique(dta)]
[1]  2  3  5  6 10

mais setdiff c'est mieux

Deux petites remarques :
- je trouve que le séparateur "." n'est pas facile à lire, j'ai du me creuser un peu la tête pour comprendre ce que voulais dire (1.1.4.7.7.8.8.9.9), "," me semble plus naturel et plus dans l'esprit de R
-merci d'utiliser les balises [ code][/code] pour montrer le code (bouton "Code")

Serge

sim moumné
Messages : 3
Enregistré le : 22 Juil 2017, 11:15

Re: vecteurs manquant

Messagepar sim moumné » 27 Juil 2017, 06:19

bonjour,
merci infiniment à vous deux ,
vos deux méthode sont bon, étant donné que je n'est pas mis de code c’était pas évident.
voilà ce que j'ai fait.
le code de Serge celui qui convient le mieux,

Code : Tout sélectionner

dta<-c(1,1,4,7,7,8,8,9,9)
table(dta)
l_valeur<-1:10
l_valeur[!l_valeur %in% unique(dta)]

de cette façon j'ai le nombre des vecteurs qui sont en double ou plus,
et j'ai mis ton (dta) en table (ligne deux).
quand à la méthode de Charles :(sans mise en code)
vec<-c(1,2,3,4,5,6,7,8,9,10)
unique(vec)
setdiff(x,vec)
j'ai mis (vec) en y et cela ma donné le reste des vecteur manquants j'usqu'à 1010 ce qui est logique car cela correspond à (x),par contre cela dépasse le chifre 10,mais par curiosité y-a-t'il un moyen ? de s’arrêter à 11 ou 12 ...etc
tout cela ma permis d'avancer rapidement,
normalement j'utilise Latex et lua pour l'ensemble de mes documents et depuis que je me suis mis à R c'est le top.
et savoir qu'il y à des des personne comme vous qui tire vers le haut c'est tout simplement génial
un énorme merci
cordialement
sim

Charles Marcucci
Messages : 52
Enregistré le : 13 Juil 2016, 09:00

Re: vecteurs manquant

Messagepar Charles Marcucci » 27 Juil 2017, 06:49

bonjour

De rien pour l'aide c'est normal.

En faite le unique c'est pas sur vec mais sur ton vecteur X que tu dois le faire mais je me rend compte que tu n'en a pas forcement besoins.
Attention pour faire ce que tu veux ton setdiff tu dois le mettre

Code : Tout sélectionner

setdiff(vec,dta)
car tu veux les valeur de vec qui ne sont pas dans dta.
Avec ton code tu as eu toutes les valeur de dta qui ne sont pas dans vec.
pour faire ce que tu veux je ferai de la maniéré suivante

Code : Tout sélectionner

dta<-c(1,1,4,7,7,8,8,9,9,11,12,14,15,16)
vec<-1:15
dif<-setdiff(vec,dta)
dif
[1]  2  3  5  6 10 13
dif[dif<12]
[1]  2  3  5  6 10

a la place du 12 tu met le chiffre que tu souhaite ne pas dépasser.

Cordialement

sim moumné
Messages : 3
Enregistré le : 22 Juil 2017, 11:15

Re: vecteurs manquant

Messagepar sim moumné » 27 Juil 2017, 11:08

merci bien,
ça fonctionne ,super bien.
mais je comprend pas ce que tu veut dire par
(a la place du 12 tu met le chiffre que tu souhaite ne pas dépasser.)

Code : Tout sélectionner

dta<-c(1,1,4,7,7,8,8,9,9,11,12,14,15,16)
table(dta)
vec<-1:15
dif<-setdiff(vec,dta)
dif
dif[dif<12]

j'ai rajouté

Code : Tout sélectionner

table(dta)
qui me permet de voir les vecteur qui sont en doublon ou plus,
de ce fait :
1) j'ai mes chiffres qui sont sélectionné par

Code : Tout sélectionner

dta<-c(1,1,4,7,7,8,8,9,9,11,12,14,15,16)

2) donc ainsi leurs quantités qui est importante pour mes calcules

Code : Tout sélectionner

table(dta)

3) et enfin les chiffres restants

Code : Tout sélectionner

dif[dif<14]


ps:je viens de tombé sur ton message par pur hasard ,je ne comprend pas pourquoi je n'ai pas eu de message d'alerte dans mes boites mail ni personnelle ni celle du forum,
merci beaucoup


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Bertrand Vassor et 1 invité