我希望创建一个基于其他两个列的排序的新列,最好使用Tidyverse函数,但欢迎任何建议。我有一个大约有1300个条目和几列的表,但我的数据样本看起来像这样:
人数 | 总排序 | TotalQuantile | 12 | 1 | 1 |
---|---|---|
19 | 2 | 1 |
3 | 2 | |
5 | 2 | |
5 | 3 | |
6 | 3 | |
7 | 4 | |
75 | 8 | 4 |
library(dplyr)
df <-
structure(list(
Number.of.people = c(12L, 19L, 21L, 45L, 53L, 55L, 60L, 75L),
TotalOrder = c(1L, 2L, 3L, 5L, 5L, 6L, 7L, 8L),
TotalQuantile = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L)),
row.names = c(NA,-8L), class = c("tbl_df", "tbl", "data.frame"))
df %>%
group_by(TotalQuantile) %>%
mutate(NewOrder = row_number())
# A tibble: 8 x 4
# Groups: TotalQuantile [4]
Number.of.people TotalOrder TotalQuantile NewOrder
<int> <int> <int> <int>
1 12 1 1 1
2 19 2 1 2
3 21 3 2 1
4 45 5 2 2
5 53 5 3 1
6 55 6 3 2
7 60 7 4 1
8 75 8 4 2