R语言如何将百分比变量合并至名义差值列并格式化显示?
在R中合并差值与百分比列的实现方法
假设你的数据集结构如下(可替换为实际的dput输出):
df <- data.frame( `City Name` = c("北京", "上海", "广州"), `Average amount` = c(12000, 15000, 10000), `Nominal Difference` = c(2000, -1000, 500), `%` = c(19.2, -6.7, 5.3) )
方法一:Base R 原生实现
直接用paste0和sprintf完成字符串拼接,同时处理正负号显示:
# 合并字段并替换原Nominal Difference列 df$`Nominal Difference` <- with(df, paste0( `Nominal Difference`, " (", ifelse(`%` >= 0, "+", ""), # 正数前添加+号,负数保留原有负号 sprintf("%.1f%%", `%`), # 格式化百分比为1位小数,末尾加% ")" )) # 查看处理后的数据 print(df)
方法二:tidyverse 工具集实现
如果你习惯用dplyr和stringr,可以用mutate配合str_glue实现:
library(dplyr) library(stringr) df <- df %>% mutate( `Nominal Difference` = str_glue("{`Nominal Difference`} ({ifelse(`%` >= 0, '+', '')}{sprintf('%.1f%%', `%`)})") ) print(df)
注意事项
- 如果
%列是字符类型,需要先转换为数值型:df$%<- as.numeric(df$%) - 调整小数位数:把
sprintf中的%.1f%%改成%.2f%%即可保留两位小数 - 若不想覆盖原列,将新列命名为其他名称(如
Diff_with_Perc)即可
内容的提问来源于stack exchange,提问作者io_boh
相关产品推荐
相关产品推荐

