如何在R管道中整合排序步骤,避免创建两个独立变量?
问题解答
当然可以,你可以用dplyr的arrange()函数直接把排序步骤整合到管道操作中,同时还能修正你原代码里的一个小问题——在mutate()里直接引用还未创建的tooth_df会导致错误,应该直接引用管道当前数据流中的列。
优化后的完整管道代码
# 按补充剂、剂量计算平均牙齿长度(保留1位小数)并排序 tooth_df <- ToothGrowth %>% group_by(supp, dose) %>% summarize(avglength = round(mean(len, na.rm = TRUE), digits = 1), .groups = "drop") %>% arrange(supp, desc(dose)) # 按supp升序、dose降序排序
代码说明
- 把
round()直接整合到summarize()里,一步生成格式化后的平均长度列,避免额外的mutate()步骤 - 使用
arrange()函数替代基础R的order(),直接在管道末尾添加排序逻辑,无需创建第二个变量 desc(dose)实现对dose列的降序排序,和你原代码里-tooth_df$dose效果一致
内容的提问来源于stack exchange,提问作者jordan_butler_33
相关产品推荐
相关产品推荐

