Jac*_*dom 7 excel r xlsx openxlsx
R3.2.3/openxlsx 3.0.0
我有几个数据帧,我正在用openxlsx写入Excel工作簿.其中一个数据帧包含诸如0.07之类的值.同
createStyle(numFmt='PERCENTAGE')
Run Code Online (Sandbox Code Playgroud)
我在工作簿中得到7.00%的输出.到现在为止还挺好.但我想要7%作为输出.我尝试了几件事,比如堆叠样式,
createStyle(numFmt=c('PERCENTAGE','0'))
createStyle(numFmt='PERCENTAGE 0')
Run Code Online (Sandbox Code Playgroud)
但它们要么导致错误,要么产生不必要的结果.任何正确方向的建议都会受到欢迎.升级到较新版本的openxlsx不是一种选择.
您可以使用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")
Run Code Online (Sandbox Code Playgroud)
使用Excel百分比格式的一个优点是电子表格中的基础数据仍然是数字,而不是文本字符串.
这是工作表的样子:
从@parL 的答案延伸。为了使这种方法发挥作用,您需要删除createStyle(numFmt='PERCENTAGE 0'):
你可以尝试做这样的事情:
i<-sapply(df, is.numeric)
df[i]<-lapply(df[i], scales::percent)
Run Code Online (Sandbox Code Playgroud)
这使得数据框中的所有数值列都转换为字符串格式。