6
Tipler ve değerler içeren bir df
sahibim. type
içinde x
sırasına göre sıralamak ve diğer satırların n
satırının (sütun pos
) x
daha yüksek bir değerine sahip olmasını sağlamak istiyorum.Her grup için sıraları hesapla
örn.
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
ben ile yapabilirsiniz:
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
Ama bu yaklaşım tip a
satır 1 ve 2 no'lu hesap bağları dikkate almaz nedir bağları aynı olması çıkışını almanın en kolay yolu değer örneğin
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 gerekmez sipariş! 'rank' takım setine eklendi! – user1320502
+1! ama neden 'min' kravat yöntemi? – agstudy
sadece 'min' harfini oku, bağların vektörde bulunan sekanstaki minimum değere sahip olmasını sağlar. aksi halde bağlarımın her ikisi de 1 – user1320502