如何在R / dplyr包中获得前3个值以升序而不是降序排列

时间:2016-07-20 18:26:35

标签: r dplyr

我目前在dplyr工作,并重塑:

我有一个45个城市的列表,每个城市有大约10列数据。我想要每个城市/行的三个最小值。

我能够让他们完成这个:

new_df <- melt(Df) ## giving me the long form of the data
newer_df2$value2 <- new_df$value * -1
top3 <- newer_df %>% group_by(City) %>% arrange(value2) %>% top_n(3)

以我为例:

City    Value
City 1  -1000
City 1   -999
City 1   -998
city 2   -500
city 2   -499
city 2   -498` 

等...

因此,虽然这在技术上是答案,但是按照相反的顺序更容易,如下所示,因此我可以将其导出为csv,而无需在excel中对其进行格式化。

City    Value
City 1   -998
City 1   -999
City 1   -1000
city 2   -498
city 2   -499
city 2   -500`

**当我不加-1时,它会给出三个最高值,但顺序正确

1 个答案:

答案 0 :(得分:0)

我认为您可能希望在 arrange之后使用top_n 。例如:

new_df %>% top_n(-3, value) %>% arrange(desc(value))