supression de lignes à intervalles réguliers

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

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

supression de lignes à intervalles réguliers

Messagepar Delalande Lucas » 25 Avr 2018, 07:26

Bonjour,

Je cherche à supprimer une ligne sur deux dans un dataframe ou bien 2 ligne sur 3 , etc.. sans autres conditions particulières.. une méthode ?

Merci,

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: supression de lignes à intervalles réguliers

Messagepar Pierre-Yves Berrard » 25 Avr 2018, 08:13

Bonjour,

Utiliser la sélection par booléens et le recyclage. Exemples :

Code : Tout sélectionner

iris[c(TRUE, FALSE), ]
iris[c(FALSE, TRUE), ]
iris[c(TRUE, FALSE, TRUE), ]
iris[c(FALSE, TRUE, FALSE), ]
PY

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

Re: supression de lignes à intervalles réguliers

Messagepar Serge Rapenne » 25 Avr 2018, 08:17

Bonjour,

une possibilité :

Code : Tout sélectionner

dta<-data.frame(A=1:10,B=11:20) #un jeu de données pour l'exemple
dta
    A  B
1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
6   6 16
7   7 17
8   8 18
9   9 19
10 10 20
seq_supr<-seq(2,nrow(dta),by=2)
dta<-dta[-seq_supr,]
dta
 A  B
1 1 11
3 3 13
5 5 15
7 7 17
9 9 19

pour en supprimer 1 sur n, il suffit de remplacer le by=2 par by=n et de jouer sur la valeur de départ de la séquence.

Serge

EDIT. J'aime beaucoup l'idée de Pierre-Yves.

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: supression de lignes à intervalles réguliers

Messagepar Delalande Lucas » 25 Avr 2018, 08:28

bien joué ! ;) merci!

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: supression de lignes à intervalles réguliers

Messagepar Delalande Lucas » 25 Avr 2018, 12:49

Et si maintenant, je veux ne garder que les n premières lignes en fonction d'une colonne facteur :

ex :
a<-c(1,3,4,5,6,7)
b<-c(1,1,1,2,2,2)

(b est un factor)

je veux par exemple garder les 2 premières valeur de chaque groupe et avoir :

a<-c(1,3,5,6)

un sapply ? (j'aimerais par la suite calculer le sd de ces deux première valeurs)

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: supression de lignes à intervalles réguliers

Messagepar Pierre-Yves Berrard » 25 Avr 2018, 12:59

Il faut commencer par tapply (sapply sert à appliquer la même fonction à chaque élément d'un vecteur/liste).

Code : Tout sélectionner

elem2 <- tapply(a, b, function(x) x[1:2]) # pour les éléments
sapply(elem2, sd)

# tant qu'à faire, autant calculer l'écart type tout de suite ?
tapply(a, b, function(x) sd(x[1:2]))
PY

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: supression de lignes à intervalles réguliers

Messagepar Delalande Lucas » 25 Avr 2018, 14:03

super, merci !


Retourner vers « Questions en cours »

Qui est en ligne

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