Можем ли мы «заменить» столбец из сводной таблицы, созданной с помощью пакета «pivottabler» из r? - PullRequest
0 голосов
/ 18 июня 2020

Я использую пакет pivottabler для создания нескольких сводных таблиц в R.

В основном, сводные таблицы, которые я создаю, имеют аналогичную структуру, только изменяется заголовок столбца.

Например , У меня есть набор данных, содержащий цены на фрукты в зависимости от региона и месяца. Итак, я создам одну сводную таблицу, которая будет выглядеть так:

Fruits   Nigeria   Laos   England
         Prices   Prices   Prices
Apple      1$       2$       3$
Mango      4$       5$       6$
Orange     7$       8$       9$

И еще одна сводная таблица, которая будет выглядеть так:

Fruits    Jan      Feb     March
         Prices   Prices   Prices
Apple      1$      1.5$      2$
Mango      4$      4.5$      5$
Orange     7$      7.5$      8$

Сейчас я использую два разных кода для создания обоих сводные таблицы.

pt_country <- PivotTable$new()
pt_country$addData(Fruit_Prices) #Fruit_Prices is the data frame containing the data
pt_country$addColumnDataGroups("Countries")
pt_country$addRowDataGroups("Fruits")
pt_country$defineCalculation(CalculationName = "Prices")
pt_country$renderPivot()

pt_country <- PivotTable$new()
pt_country$addData(Fruit_Prices) #Fruit_Prices is the data frame containing the data
pt_country$addColumnDataGroups("Months")
pt_country$addRowDataGroups("Fruits")
pt_country$defineCalculation(CalculationName = "Prices")
pt_country$renderPivot()

Я хочу сократить длину кода, так как таких сводных таблиц будет несколько.

Итак, в идеале я искал решение, которое позволяет мне заменить одну группа столбцов с другой без изменений в других структурах кода.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Я являюсь автором пакета pivottabler.

В настоящее время есть только ограниченные возможности для изменения сводной таблицы после ее расчета.

Подробнее

В вашем примере удаление столбцов также приведет к удалению вычислений, поскольку в вашем сценарии R вычисления добавляются после столбцов. В этом случае повторное применение вычислений невозможно, поскольку сводная таблица распознает, что вычисления уже были добавлены (вы получаете сообщение об ошибке). Я рассмотрю варианты, которые позволят добавить гибкости в будущем.

Альтернативный подход

Одним из вариантов уменьшения объема кода является создание функции, которая принимает в качестве параметра переменная, отображаемая в столбцах. Затем эту функцию можно легко вызвать для создания различных вариантов сводной таблицы:

createPivot <- function(columnGroupVariableName)
{
  pt <- PivotTable$new()
  pt$addData(bhmtrains)
  pt$addColumnDataGroups(columnGroupVariableName)
  pt$addRowDataGroups("TOC")
  pt$defineCalculation(calculationName="TotalTrains", summariseExpression="n()")
  pt$renderPivot()
}

# create pivot tables with different variables on the columns
createPivot("TrainCategory")
createPivot("PowerType")
0 голосов
/ 15 июля 2020

Я нашел своего рода обходное решение этой проблемы. Подумал упомянуть об этом здесь просто для ради. 1003 *

pt <- PivotTable$new()
pt$addData(bhmtrains)

pt$defineCalculation(calculationName="TotalTrains", summariseExpression="n()")

pt$addRowDataGroups("TOC")

## Adding the required column for the pivot
Col <- pt$addColumnGroup() # Step1
Col_Data <- Col$addDataGroups("TrainCategory") # Step 2

pt$renderPivot()

## Removing the 'Col' group, thus deleting the added columns
Col$removeGroup()

## Repeating Step 1 and Step 2 for another column variable
Col <- pt$addColumnGroup() # Step1
Col_Data <- Col$addDataGroups("PowerType") # Step 2

pt$renderPivot()

Приведенные выше строки кода работали для меня, и метод был найден в виньетках «Нерегулярные» по адресу: http://www.pivottabler.org.uk/articles/v11-irregularlayout.html

...