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
相关产品推荐
相关产品推荐

