R语言:如何按group_by未包含的列n1降序排列结果?
解决按n1列降序排列的问题
你的代码存在两个关键问题,导致无法实现按n1降序排列的需求:
- 第二次分组执行
summarize时,没有保留n1列,后续无法基于该列排序 - 即使
n1列存在,arrange(n1)默认是升序排列,降序需要显式指定
以下是修正后的完整代码:
dummy_data <- data.frame( a = sample(letters[1:3], 100, replace = TRUE), b = sample(LETTERS[1:2], 100, replace = TRUE), c = sample(1:2, 100, replace = TRUE), NO = sample(1:10, 100, replace = TRUE) ) # 修正后的数据处理流程 result <- dummy_data %>% group_by(a, b) %>% mutate(n1 = n_distinct(NO)) %>% filter(n1 > 3) %>% group_by(a, b, c) %>% summarize( n2 = n_distinct(NO), n1 = first(n1) # 保留n1列,同一(a,b)分组下的n1值完全一致 ) %>% arrange(desc(n1)) # 按n1列降序排列
说明
- 用
first(n1)保留n1列:因为每个(a,b,c)分组都隶属于同一个(a,b)分组,对应的n1值完全相同,用unique(n1)或max(n1)也能达到同样效果 arrange(desc(n1)):通过desc()函数指定降序规则,实现结果按n1从大到小排列
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

