6
Ho un df
con tipi e valori. Voglio classificarli nell'ordine all'interno di type
e dare un conteggio di quante altre righe riga n
ha il valore superiore di x
rispetto a (colonna pos
).Calcola ranghi per ciascun gruppo
ad es.
df <- data.frame(type = c("a","a","a","b","b","b"),x=c(1,77,1,34,1,8))
# for type a row 3 has a higher x than row 1 and 2 so has a pos value of 2
posso fare questo con:
library(plyr)
df <- data.frame(type = c("a","a","a","b","b","b"),x=c(1,77,1,34,1,8))
df <- ddply(df,.(type), function(x) x[with(x, order(x)) ,])
df <- ddply(df,.(type), transform, pos = (seq_along(x)-1))
type x pos
1 a 1 0
2 a 1 1
3 a 77 2
4 b 1 0
5 b 8 1
6 b 34 2
Ma questo approccio non tener conto di legami tra tipo a
riga 1 e 2. Che cosa è il modo più semplice per ottenere l'output in cui i legami hanno la stessa valore es
type x pos
1 a 1 0
2 a 1 0
3 a 77 2
4 b 1 0
5 b 8 1
6 b 34 2
+1 nessun ordine richiesto! 'rank' aggiunto al tool kit! – user1320502
+1! ma perché il metodo del legame "min"? – agstudy
basta leggere 'min' perché i legami abbiano il valore minimo nel seqeunce che si trovano nel vettore. altrimenti i miei legami avrebbero entrambi un valore di 1 – user1320502