Форматирование процентов в 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)

Это делает все столбцы числовых значений во фрейме данных в строковом формате.

Другие вопросы по тегам