【问题标题】:Formatting percentages in R-package openxlsx在 R 包 openxlsx 中格式化百分比
【发布时间】:2018-06-12 06:43:25
【问题描述】:

R3.2.3/openxlsx 3.0.0

我有几个数据框正在使用 openxlsx 写入 Excel 工作簿。其中一个数据框包含诸如 0.07 之类的值。与

createStyle(numFmt='PERCENTAGE') 

我在工作簿中得到 7.00% 作为输出。到目前为止,一切都很好。但我想要 7% 作为输出。我尝试了几件事,例如堆叠样式,

createStyle(numFmt=c('PERCENTAGE','0'))

createStyle(numFmt='PERCENTAGE 0')

但它们要么导致错误,要么给出不需要的结果。任何朝着正确方向提出的建议都将受到欢迎。升级到较新版本的 openxlsx 不是一种选择。

【问题讨论】:

  • 查看scales R 包中的percent 函数。还要检查这个post
  • 如果可以,请提供一个简短但完整的代码示例,并附上示例数据。此外,一个潜在的“hacky”解决方案是创建第二种样式,它将小数位数设置为您想要的位数,并在您指定它的百分比后添加。我还没有检查过这是否有效,而且效率不高,但是您正在通过 R 与 excel 进行交互,所以...

标签: r excel xlsx openxlsx


【解决方案1】:

您可以使用 Excel 的格式代码创建不带小数位的百分比样式,然后将该样式应用于特定单元格。例如:

library(openxlsx)

# Fake data
set.seed(2)
dat = data.frame(v1=LETTERS[1:10], v2=runif(10), v3=letters[1:10], v4=runif(10))

# Create an Excel workbook object and add a worksheet
wb = createWorkbook()
sht = addWorksheet(wb, "Data")

# Create a percent style
pct = createStyle(numFmt="0%")

# Add fake data to the worksheet we just created
writeData(wb, sht, dat)

# Add the percent style to the desired cells
addStyle(wb, sht, style=pct, cols=c(2,4), rows=2:(nrow(dat)+1), gridExpand=TRUE)

saveWorkbook(wb, "my_workbook.xlsx")

使用 Excel 的百分比格式的一个优点是电子表格中的基础数据仍然是数字,而不是文本字符串。

工作表如下所示:

【讨论】:

    【解决方案2】:

    延伸自@parL 的回答。要使这种方法起作用,您需要删除 createStyle(numFmt='PERCENTAGE 0'):

    你可以尝试做这样的事情:

    i<-sapply(df, is.numeric)
    df[i]<-lapply(df[i], scales::percent)
    

    这使得数据框中的所有数值列都变为字符串格式。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 2011-11-01
      • 2019-07-03
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多