Фрейм данных сохраняется в списке вместе с именами переменных строки и столбца, а также имя_группатора.
library(rpivotTable)
pv <- rpivotTable(
df,
aggregatorName = "Count",
cols = "Order_Bin",
rows = "User",
rendererName = "Heatmap",
width = "100%",
height = "1000px")
class(pv)
str(pv)
List of 8
$ x :List of 4
..$ data :'data.frame': 16 obs. of 2 variables:
.. ..$ User : chr [1:16] "a" "b" "c" "d" ...
.. ..$ Order_Bin: chr [1:16] "PPL" "CCD" "CCD" "OLP" ...
..$ params :List of 4
.. ..$ rows :List of 1
.. .. ..$ : chr "User"
.. ..$ cols :List of 1
.. .. ..$ : chr "Order_Bin"
.. ..$ aggregatorName:List of 1
.. .. ..$ : chr "Count" # etc. ...
Затем эту информацию можно использовать для создайте фрейм данных , который вы запрашивали, чтобы содержать результаты сводной таблицы:
pv$x$data %>%
group_by(Order_Bin, User) %>%
count() %>%
pivot_wider(id_cols=User, names_from=Order_Bin, values_from=n,
values_fill=list(n=0))
# A tibble: 4 x 4
User CCD OLP PPL
<chr> <int> <int> <int>
1 b 2 2 1
2 c 2 1 1
3 d 1 2 0
4 a 0 2 2
Редактировать: получить проценты строки :
pv$x$data %>%
group_by(Order_Bin, User) %>%
count() %>%
group_by(User) %>%
mutate(n=n/sum(n)) %>%
pivot_wider(id_cols=User, names_from=Order_Bin, values_from=n,
values_fill=list(n=0))
# A tibble: 4 x 4
# Groups: User [4]
User CCD OLP PPL
<chr> <dbl> <dbl> <dbl>
1 b 0.4 0.4 0.2
2 c 0.5 0.25 0.25
3 d 0.333 0.667 0
4 a 0 0.5 0.5