You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言santoku包分箱时如何消除科学计数法并格式化货币标签

问题原因

options(scipen = 999)设置无效,是因为santoku包的标签生成函数lbl_dash()内置独立的数值格式化逻辑,默认不会沿用全局环境的科学计数法配置,在标签函数内显式指定数值格式化规则即可解决。

方案1:生成完整整数格式区间标签

在lbl_dash()中通过fmt参数传入格式化规则,关闭科学计数法即可,代码如下:

NH_12mo %>%  
  mutate(price_groups = chop(priceSold, seq(0, 2100000, by = 100000),
                             labels = lbl_dash("-", fmt = ~ format(.x, scientific = FALSE)))) %>% 
  group_by(price_groups) %>% 
  summarize(n = n()) %>% 
  adorn_totals("row")

运行后生成的标签为100000-200000、200000-300000这类完整整数格式,无科学计数法显示问题。

方案2:生成美元货币格式区间标签(推荐房价场景使用)

如果需要更易读的美元货币格式,可借助tidyverse自带的scales包中的dollar()格式化函数,直接生成带美元符号、千分位分隔符的标签,代码如下:

# scales为tidyverse依赖包,无需单独安装
NH_12mo %>%  
  mutate(price_groups = chop(priceSold, seq(0, 2100000, by = 100000),
                             labels = lbl_dash("-", fmt = ~ scales::dollar(.x, accuracy = 1)))) %>% 
  group_by(price_groups) %>% 
  summarize(n = n()) %>% 
  adorn_totals("row")

运行后输出的前几行结果如下:

# A tibble: 21 × 2
   price_groups             n
   <fct>                <int>
 1 $100,000-$200,000        6
 2 $200,000-$300,000        8
 3 $300,000-$400,000       24
 4 $400,000-$500,000       44
 5 $500,000-$600,000       58
 6 $600,000-$700,000       40
 7 $700,000-$800,000       32
 8 $800,000-$900,000       30
 9 $900,000-$1,000,000     13
10 $1,000,000-$1,100,000    8
# … with 11 more rows

内容的提问来源于stack exchange,提问作者EastBeast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:36:17