R语言中统计PipeID频次对应总次数的实现方法求助
解决方案
方法1:基于已生成的num_occur数据框
对num_occur按freq字段分组,汇总每个频次对应的总次数即可:
result <- num_occur %>% group_by(freq) %>% summarise(count = sum(freq)) %>% arrange(desc(freq)) # 可选,按频次降序排列匹配期望输出
运行结果与你期望的一致:
# A tibble: 2 × 2 freq count <int> <int> 1 2 4 2 1 1
方法2:直接从原始df一步完成(更高效)
可以跳过中间的num_occur,直接从原始数据完成两次分组统计,减少不必要的数据框生成:
result <- df %>% # 第一步:统计每个PipeID的出现频次 group_by(PipeID) %>% summarise(freq = n()) %>% # 第二步:统计不同频次对应的总次数 group_by(freq) %>% summarise(count = sum(freq)) %>% arrange(desc(freq))
补充说明
你之前生成num_occur的代码存在冗余:group_by(PipeID)后,PipeID作为分组键会自动保留,不需要用sum(PipeID),直接写summarise(freq = n())就能得到正确的PipeID和对应频次,避免无效计算。
内容的提问来源于stack exchange,提问作者Xaviermoros
相关产品推荐
相关产品推荐

