编辑:适用于经打勾的答案的修改版本,如下所示
data1 <- data %>% group_by(pitch_2) %>% mutate(rank = order(euclid_dist))
原版的 - -
我在自己的数据帧中有时间框架中所有可能的音高组合(超过8000万个)的配对-pitch_1下是一个id,pitch_2下是另一个id,第三列是euclid_dist,用于度量一个音高与另一个音高的接近程度-并且我想在数据框中创建第四列,在该列中,按最低编号(最佳匹配)到最高编号对组合进行排名。
我希望相对于pitch_2中具有相同主音高的其他组合进行排名。因此,与所有其他与相同音高_2进行比较的音高_1相比,他们首先按最低数字对音高_1之下的音高进行排名。
这只是我的数据的样子
> head(data)
pitch_1 pitch_2 euclid_dist
2 400010-FF 493247-SI 3.631515
3 493247-SL 493247-SI 3.125729
4 349193-FT 493247-SI 4.619143
5 150037-FF 493247-SI 4.137001
6 218596-FF 493247-SI 2.536352
7 218596-SI 493247-SI 1.438356
使用那个小子集上的排名,我得到了我想要的数据看起来像什么,但不知道如何将其扩展到我的大数据框,其中包含大量的pitch_2
data$rank <- rank(data$euclid_dist)
我希望它看起来像什么(有些行您看不到,这些行填补了其他行列)
pitch_1 pitch_2 euclid_dist rank
2 400010-FF 493247-SI 3.631515 7
3 493247-SL 493247-SI 3.125729 6
4 349193-FT 493247-SI 4.619143 10
5 150037-FF 493247-SI 4.137001 8
6 218596-FF 493247-SI 2.536352 4
7 218596-SI 493247-SI 1.438356 1
使用dplyr
s mutate +顺序:
df <- data_frame(x = c(100, 300, 400, 50, 20, 600))
df <- df %>% mutate(xx = order(x))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句