Относительно "офицерского" пакета и функции Table в R - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть следующий фрагмент кода, где я: 1) заполняю фрейм данных и его сводку в PPT, используя пакет офицера 2) Рассчитываю сводку из фрейма данных, используя табличную функцию

library(officer)

df1 <- data.frame(
  Country = c("France", "England", "India", "America", "England", "India"),
  City = c("Paris", "London", "Mumbai", "Los Angeles", "Surrey", "Chennai"),
  Order_No = c("1", "2", "3", "4", "5", "6"),
  State = c("Yes", "No", "Yes", "No", "Yes", "Transit"),
  stringsAsFactors = FALSE
)

my_pres <- read_pptx() 
my_pres <- add_slide(my_pres, layout = "Title and Content", master = "Office Theme")
my_pres <- ph_with(my_pres, value = "heading", location = ph_location_type(type = "title"))
my_pres <- ph_with(my_pres, value = df1, location = ph_location_type(type = "body"), header = TRUE)
print(my_pres, target = "first_example.pptx") 


table1 <- table(df1$Country, df1$State)

overview.df <- data.frame(Country = rownames(table1), 
                          Not.Delivered =table1[,1],
                          In.Transit = table1[,2],
                          Delivered = table1[,3])


my_pres <- add_slide(my_pres, layout = "Title and Content", master = "Office Theme")
my_pres <- ph_with(my_pres, value = "Summary", location = ph_location_type(type = "title"))
my_pres <- ph_with(my_pres, value = overview.df, location = ph_location_type(type = "body"), header = TRUE)
print(my_pres, target = "first_example.pptx") 

У меня есть 2 вопроса Здесь я не могу решить, и мне нужна помощь:

1) Я не могу изменить шрифт и размер шрифта вывода в PPT. Может ли кто-нибудь помочь мне здесь 2) Когда я вычисляю фрейм данных "Overview.df" из "table1", иногда выходные данные содержат "Да", "Нет" и "Транзит", для которых работает вышеуказанный код. Но иногда, кадр входных данных содержит только «Да» и «Нет», для которых мой код не выполняется. Поэтому я хотел бы, чтобы обобщенный код c заменил следующие строки:

table1 <- table(df1$Country, df1$State)

overview.df <- data.frame(Country = rownames(table1), 
                          Not.Delivered =table1[,1],
                          In.Transit = table1[,2],
                          Delivered = table1[,3])

Спасибо всем заранее! Жду вашего ответа.

1 Ответ

1 голос
/ 15 февраля 2020

Вопрос 1: вам нужно использовать fpar и / или block_list для управления размером R, цветом и т. Д. c. шрифтов. По умолчанию используется шрифт, определенный в вашем шаблоне. В вашем случае вы не предоставляете никаких шаблонов, поэтому используется шаблон по умолчанию.

Вопрос 2: возможно, используйте flextable::proc_freq:

library(officer)
library(flextable)

df1 <- data.frame(
  Country = c("France", "England", "India", "America", "England", "India"),
  City = c("Paris", "London", "Mumbai", "Los Angeles", "Surrey", "Chennai"),
  Order_No = c("1", "2", "3", "4", "5", "6"),
  State = c("Yes", "No", "Yes", "No", "Yes", "Transit"),
  stringsAsFactors = FALSE
)

# this is a "proc freq" like ----
pf <- proc_freq(df1, "Country", "State")
pf <- fontsize(pf, size = 11, part = "all")
pf <- padding(pf, padding = 1, part = "all")
pf <- valign(pf, valign = "top", part = "all")
pf <- autofit(pf)



my_pres <- read_pptx() 
my_pres <- add_slide(my_pres, layout = "Title and Content", master = "Office Theme")
my_pres <- ph_with(my_pres, value = "heading", location = ph_location_type(type = "title"))
my_pres <- ph_with(my_pres, value = df1, location = ph_location_type(type = "body"), header = TRUE)

my_pres <- add_slide(my_pres, layout = "Title and Content", master = "Office Theme")
my_pres <- ph_with(my_pres, value = "Summary", location = ph_location_type(type = "title"))
my_pres <- ph_with(my_pres, value = pf, 
                   location = ph_location_type(type = "body"), header = TRUE)
print(my_pres, target = "first_example.pptx")

enter image description here

...