Je souhaite indexer des enregistrements d'une colonne, les lignes étant ordonnées selon une autre.
Par exemple, si j'ai
Code : Tout sélectionner
test <- read.table(textConnection("
ID Com Weight
888 50 1
889 18 1
890 5 2
891 5 2
892 6 2
893 6 2
894 25 4
895 25 4
896 25 4
897 25 4
"
),sep=" ",h=T)
avec les lignes ordonnées selon les valeurs de la variable "Weight", et je veux indexer les lignes avec un nouveau numéro dès qu'on passe à une nouvelle communauté "Com", cad avoir le résultat
Code : Tout sélectionner
> test
ID Com Weight Index
1 888 50 1 1
2 889 18 1 2
3 890 5 2 3
4 891 5 2 3
5 892 6 2 4
6 893 6 2 4
7 894 25 4 5
8 895 25 4 5
9 896 25 4 5
10 897 25 4 5
j'y arrive en passant par une boucle
Code : Tout sélectionner
test$Index <- 1
for (i in 1:(nrow(test)-1)){
j <- i + 1
k <- test[i,]$Index
test[j,]$Index <- ifelse (test[j,]$Com != test[i,]$Com, k + 1, k)
}
mais je me dis qu'il y a peut-être plus simple ?
Merci d'avance pour vos réponses.
Anne