0

I am working through creating pivot tables with the Pivottabler package to summarise frequencies of rock art classes by location. The data I am summarising here are from published papers, and I have it stored in an RDS file created in R, and looks like this:

> head(cyp_art_freq)
            Class                      Location value
1:     Figurative        Princess Charlotte Bay   347
2:          Track        Princess Charlotte Bay    35
3: Non-Figurative        Princess Charlotte Bay    18
4:     Figurative Mitchell-Palmer and Chillagoe   320
5:          Track Mitchell-Palmer and Chillagoe    79
6: Non-Figurative Mitchell-Palmer and Chillagoe  1002

>str(cyp_art_freq)
Classes ‘data.table’ and 'data.frame':  12 obs. of  3 variables:
Class   : chr  "Figurative" "Track" "Non-Figurative" "Figurative" ...
Location: chr  "Princess Charlotte Bay" "Princess Charlotte Bay" "Princess Charlotte Bay" "Mitchell-Palmer and Chillagoe" ...
value   : num  347 35 18 320 79 ...
attr(*, ".internal.selfref")=<externalptr> 

The problem is that pivottabler does not sum the contents of the 'value' col. Instead, it counts the number of rows/cases. So, as the graphic below shows, the resulting table includes a total of 12 cases when the result should be into the 1000s. I think this relates to the 'value' column which is a count of a larger dataset. I've tried pivot_longer and pivot_wider, changed datatypes and used CSVs instead of RDS for import (and more).

The code block I'm using for this data works with the built-in BHMtrains dataset, and my other datasets, but I suspect I can either specify that pivottabler tallies the contents of the 'values' col, or I just expand the underlying dataset.

How might I ensure that the 'Count' columns actually count the contents of the input 'value' column? I hope that is clear, and thanks for any suggestions on how to address this issue.

table01 <- PivotTable$new()
table01$addData(cyp_art_freq)
table01$addColumnDataGroups("Class", totalCaption = "Total")
table01$defineCalculation(calculationName="Count", summariseExpression="n()", caption="Count", visible=TRUE)
filterOverrides <- PivotFilterOverrides$new(table01, keepOnlyFiltersFor="Count")
table01$defineCalculation(calculationName="TOCTotal", filters=filterOverrides, 
                          summariseExpression="n()", caption="TOC Total", visible=FALSE)
table01$defineCalculation(calculationName="PercentageAllMotifs", type="calculation", 
                          basedOn=c("Count", "TOCTotal"),
                          calculationExpression="values$Count/values$TOCTotal*100", 
                          format="%.1f %%", caption="Percent")
table01$addRowDataGroups("Location")
table01$theme <- "compact"
table01$renderPivot()
table01$evaluatePivot()

The PT returned from this code

0 Answers0