如何使用dplyr
对已排序的分组数据进行编号,例如我将如何创建下面的订购列。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species ordering
(dbl) (dbl) (dbl) (dbl) (fctr) (int)
1 4.6 3.6 1.0 0.2 setosa 1
2 4.3 3.0 1.1 0.1 setosa 2
3 5.8 4.0 1.2 0.2 setosa 3
4 5.0 3.2 1.2 0.2 setosa 4
5 4.7 3.2 1.3 0.2 setosa 5
...
46 5.7 3.8 1.7 0.3 setosa 46
47 5.4 3.4 1.7 0.2 setosa 47
48 5.1 3.3 1.7 0.5 setosa 48
49 4.8 3.4 1.9 0.2 setosa 49
50 5.1 3.8 1.9 0.4 setosa 50
51 5.1 2.5 3.0 1.1 versicolor 1
52 4.9 2.4 3.3 1.0 versicolor 2
53 5.0 2.3 3.3 1.0 versicolor 3
54 5.0 2.0 3.5 1.0 versicolor 4
55 5.7 2.6 3.5 1.0 versicolor 5
...
99 6.7 3.0 5.0 1.7 versicolor 49
100 6.0 2.7 5.1 1.6 versicolor 50
101 4.9 2.5 4.5 1.7 virginica 1
102 6.2 2.8 4.8 1.8 virginica 2
...
答案 0 :(得分:0)
iris %>% group_by(Species) %>% arrange(Petal.Length) %>% mutate(ordering = 1:n())
甚至更好
iris %>% group_by(Species) %>% arrange(Petal.Length) %>% mutate(ordering = row_number())
请注意,n()
会返回每个组的总数,因此1:n()
会返回向量c(1,2,3,..., n() )
。 row_number()
为您执行此操作。
您可以使用更复杂的分组,例如根据气缸数,齿轮数和化油器数对mtcars
进行分组,并按照每加仑英里数(select()
显示清晰度)的顺序编号:
mtcars %>% group_by(cyl, gear, carb) %>%
arrange(mpg) %>%
mutate(ordering = 1:n()) %>%
select(cyl, gear, carb, mpg, ordering)
Source: local data frame [32 x 5]
Groups: cyl, gear, carb [12]
cyl gear carb mpg ordering
(dbl) (dbl) (dbl) (dbl) (int)
1 4 3 1 21.5 1
2 4 4 1 22.8 1
3 4 4 1 27.3 2
4 4 4 1 32.4 3
5 4 4 1 33.9 4
6 4 4 2 21.4 1
7 4 4 2 22.8 2
8 4 4 2 24.4 3
9 4 4 2 30.4 4
10 4 5 2 26.0 1
.. ... ... ... ... ...