boucle pour multiplier ligne suivant trois modalités d'une colonne

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

theo marechal
Messages : 11
Enregistré le : 30 Mar 2017, 13:17

boucle pour multiplier ligne suivant trois modalités d'une colonne

Messagepar theo marechal » 18 Avr 2017, 10:13

Bonjour à tous,
Je travaille actuellement sur un jeux de données qui contient en colonne 3 variables: des coordonnées GPS (x,y) correspondant à un échantillonnage, pour chacune de ces coordonnées + un indice d'abondance dans une troisième colonne qui peut prendre les valeurs suivante 0 (1individus) 1 (3 individus) et 2(7 individus).
J'aimerais créer une boucle (je suis nulle en boucle) me permettant de multiplier les lignes de mon tableaux suivant cet indice d'abondance. Concrètement j'ai actuellement une ligne par échantillonnage et j'aimerais obtenir autant de ligne que d'individus dans chaque échantillonnage.
mettons que j'ai dans mon tableau :

Longitude Lattitude Abondance
45.02236 | 2.36589 | 1

il me faudrait :

Longitude Lattitude Abondance
45.02236 | 2.36589 | 1
45.02236 | 2.36589 | 1
45.02236 | 2.36589 | 1

si l'abondance était de 2 alors il me le faudrait 7 fois la ligne et 0 et bien rien de doit bouger...

J'espère que je suis un minimum compréhensible.

Merci ! :)

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

Re: boucle pour multiplier ligne suivant trois modalités d'une colonne

Messagepar Pierre-Yves Berrard » 18 Avr 2017, 10:54

Bonjour,

Pas besoin de boucle. ;-)

Code : Tout sélectionner

n <- data$Abondance^2 + data$Abondance + 1

data_new <- data.frame(
  Longitude = rep(data$Longitude, n),
  Latitude  = rep(data$Latitude,  n),
  Abondance = rep(data$Abondance, n)
)

La solution de Serge (ci-dessous) est meilleure s'il y a beaucoup de colonnes hors Longitude, Latitude et Abondance
PY

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

Re: boucle pour multiplier ligne suivant trois modalités d'une colonne

Messagepar Serge Rapenne » 18 Avr 2017, 11:53

Bonjour,

Code : Tout sélectionner

 dta<-data.frame(Longitude=c("45","46","47"),Latitude=c("2.36589","2.36589","2.36589"),Abondance=0:2)
 dta
  Longitude Latitude Abondance
1        45  2.36589         0
2        46  2.36589         1
3        47  2.36589         2

nb_occur<-c(1,3,7)

dta_expand<-dta[rep(row.names(dta),nb_occur[dta$Abondance+1]),1:3]
dta_expand
     Longitude Latitude Abondance
1          45  2.36589         0
2          46  2.36589         1
2.1        46  2.36589         1
2.2        46  2.36589         1
3          47  2.36589         2
3.1        47  2.36589         2
3.2        47  2.36589         2
3.3        47  2.36589         2
3.4        47  2.36589         2
3.5        47  2.36589         2
3.6        47  2.36589         2


Serge

theo marechal
Messages : 11
Enregistré le : 30 Mar 2017, 13:17

Re: boucle pour multiplier ligne suivant trois modalités d'une colonne

Messagepar theo marechal » 18 Avr 2017, 17:57

Merci beaucoup à vous deux ! :)


Retourner vers « Questions en cours »

Qui est en ligne

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