Suppression de données

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 Benoist
Messages : 2
Enregistré le : 31 Juil 2007, 08:34

Suppression de données

Messagepar Sylvain Benoist » 31 Juil 2007, 09:10

Bonjour,

Je pense que la solution doit être simple mais je n'ai pas trouvé.

Je travaille actuellement sur une table contenant environ 70000 lignes du type :

id Nombre d'offres remontées Nombre de clics
1 50 5
2 25 3
3 50 20
4 50 7
5 25 5
6 25 25


J'ai fait un premier graphique du nombre de clics moyens par nombre d'offres remontées. Or dans mes données, certains individus tirent la moyenne vers le haut en faisant un nombre de clics importants.

Je cherche donc à éliminer pour chaque offre remontée (de 1 à 250) le plus gros cliqueur.


J'ai essayé de les retirer par la formule suivante, mais sans succès :

KJ2$ssclic <- 1
KJ2$ssclic<-replace(KJ2$ssclic,(tapply(KJ2$nbclics,KJ2$nboffresReq,max)),"2")
KJ2ssclic<- subset (KJ2, KJ2$ssclic==2)

où nbclics est mon nombre de clics sur offre et nboffresReq le nombre d'offres renvoyées (compris entre 1 et 250).


En espérant avoir été suffisament clair dans ma demande et en vous remerciant par avance.


Sylvain

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 31 Juil 2007, 13:51

Je ne sais pas ce que vous voulez faire par la suite mais c'est rarement une bonne idée d'éliminer des observations de cette manière. Vous pouvez essayer une transformation de Box-Cox pour la réponse (voir fonction boxcox du package MASS), qui aboutit souvent à des transformations log ou racine carrée.

Autrement, vous pouvez utilisez les fonctions by et do.call pour faire ce que vous voulez:

Code : Tout sélectionner

> set.seed(12321)
> (dfr <- data.frame(
+          id = rep(c(1, 2), each = 5),
+          nb = sample(1:100, size = 10, replace = TRUE)))
   id nb
1   1 85
2   1 43
3   1 97
4   1  7
5   1 61
6   2 43
7   2  7
8   2 24
9   2 92
10  2 99
> (Liste <- by(dfr,
+              list(id = dfr$id),
+              function(x) x[x$nb < max(x$nb), ]))
id: 1
  id nb
1  1 85
2  1 43
4  1  7
5  1 61
---------------------------------------------------------------
id: 2
  id nb
6  2 43
7  2  7
8  2 24
9  2 92
> (dfr2 <- do.call("rbind", Liste))
    id nb
1.1  1 85
1.2  1 43
1.4  1  7
1.5  1 61
2.6  2 43
2.7  2  7
2.8  2 24
2.9  2 92


Renaud


Retourner vers « Questions en cours »

Qui est en ligne

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

cron