如何按2018-19年度产量重排数据集?R语言reorder函数求助
解决方案
问题原因
你之前的代码没生效,主要有两个可能:
- 仅用
reorder调整了因子水平,但没有对数据集执行arrange来重新排序行 - 字段名大小写不匹配(比如原数据集是
company_code,代码里写成了COMPANY_CODE)
正确实现方式
方法1:通过因子指定排序顺序
先提取2018/19财年的产量数据确定公司顺序,再将company_code转为因子并指定水平顺序,最后排序:
# 提取2018/19财年各公司产量,按产量降序得到公司顺序 company_priority <- dataset %>% filter(financial_year == "2018/19") %>% arrange(desc(production)) %>% pull(company_code) # 将company_code转为因子,指定顺序后排序整个数据集 dataset_sorted <- dataset %>% mutate(company_code = factor(company_code, levels = company_priority)) %>% arrange(company_code)
方法2:用match函数直接排序
如果不想修改字段类型,可直接用match生成排序索引:
# 先获取公司优先级顺序(同方法1) company_priority <- dataset %>% filter(financial_year == "2018/19") %>% arrange(desc(production)) %>% pull(company_code) # 按优先级顺序排序数据集 dataset_sorted <- dataset %>% arrange(match(company_code, company_priority))
验证结果
排序后,同公司的所有记录会集中在一起,且公司顺序按照2018/19财年产量从高到低排列(即3→1→2)。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

