如何在R中按季度分区对Price值进行正确排名?
解决按季度独立排名Price的问题
首先,确保你已加载dplyr包——你用到的管道符%>%、group_by()和mutate()都是该包的核心函数,未加载会导致分组逻辑失效。先运行加载命令:
library(dplyr)
你的代码逻辑本身是正确的,重新执行以下代码即可实现每个季度内Price的独立排名(最小Price对应1,最大对应3):
df <- data.frame( year=c(2010,2010,2010,2010,2010,2010), quarter=c("q1","q1","q1","q2","q2","q2"), Price=c(10,20,30,10,20,30) ) df %>% group_by(quarter) %>% mutate(rank = row_number(Price))
执行后会得到预期结果:
# A tibble: 6 × 4 # Groups: quarter [2] year quarter Price rank <dbl> <chr> <dbl> <int> 1 2010 q1 10 1 2 2010 q1 20 2 3 2010 q1 30 3 4 2010 q2 10 1 5 2010 q2 20 2 6 2010 q2 30 3
如果后续遇到同季度内有重复Price的场景,可替换row_number()为rank()函数处理并列排名,例如rank(Price, ties.method = "min")会给相同Price分配相同的最小排名。
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

