Форматирование процентов в R-пакете openxlsx
R3.2.3/openxlsx 3.0.0
У меня есть несколько фреймов данных, которые я записываю в книгу Excel с openxlsx. Один из фреймов данных содержит значения, такие как 0,07. С
createStyle(numFmt='PERCENTAGE')
Я получаю 7,00% в виде выходных данных в рабочей тетради. Все идет нормально. Но я хочу 7% в качестве выхода. Я пробовал несколько вещей, таких как стили укладки,
createStyle(numFmt=c('PERCENTAGE','0'))
createStyle(numFmt='PERCENTAGE 0')
но они либо приводят к ошибкам, либо дают нежелательные результаты. Любое предложение в правильном направлении будет приветствоваться. Обновление до новой версии openxlsx не вариант.
2 ответа
Вы можете создать процентный стиль без десятичных знаков, используя коды форматирования 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 состоит в том, что базовые данные в электронной таблице будут по-прежнему числовыми, а не, скажем, текстовыми строками.
Вот как выглядит лист:
Продолжая ответ @parL. Чтобы этот подход работал, нужно удалить createStyle(numFmt='PERCENTAGE 0')
:
Вы можете попробовать сделать что-то вроде этого:
i<-sapply(df, is.numeric)
df[i]<-lapply(df[i], scales::percent)
Это делает все столбцы числовых значений во фрейме данных в строковом формате.