IMO your question is flawed in that it does not present a desired output.

One thought that occurs to me is that perhaps you should stop treating everything like a nail and use some different tools, like nest and a for loop:

############################
library(knitr)
library(tibble)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#>     filter, lag
#> The following objects are masked from 'package:base':
#>
#>     intersect, setdiff, setequal, union
library(tidyr)

testset <- as_tibble(tribble(~Section, ~Observation, ~Order, ~Fiscal, ~Value,
                             "A", "One", 1, "2016-17", 419,
                             "A", "One", 1, "2017-18", 499,
                             "A", "One", 1, "2018-19", 463,
                             "A", "Two", 2, "2016-17", 391,
                             "A", "Two", 2, "2017-18", 445,
                             "A", "Two", 2, "2018-19", 423,
                             "A", "Three", 3, "2016-17", 348,
                             "A", "Three", 3, "2017-18", 353,
                             "A", "Three", 3, "2018-19", 357,
                             "B", "One", 1, "2016-17", 418,
                             "B", "One", 1, "2017-18", 498,
                             "B", "One", 1, "2018-19", 462,
                             "B", "Two", 2, "2016-17", 390,
                             "B", "Two", 2, "2017-18", 444,
                             "B", "Two", 2, "2018-19", 422,
                             "B", "Three", 3, "2016-17", 347,
                             "B", "Three", 3, "2017-18", 352,
                             "B", "Three", 3, "2018-19", 356
                             ))

sections <- (   testset
            %>% select( -Order )
            %>% spread( Observation, Value )
            %>% nest( -Section )
            )
# look at one of the sub-tables
sections[[ "data" ]][[1]]
#> # A tibble: 3 x 4
#>   Fiscal    One Three   Two
#>   <chr>   <dbl> <dbl> <dbl>
#> 1 2016-17   419   348   391
#> 2 2017-18   499   353   445
#> 3 2018-19   463   357   423

# print out the tables with captions
for ( rw in seq.int( nrow( sections ) ) ) {
    print( knitr::kable( sections[[ "data" ]][ rw ]
                       , caption = paste( "Section"
                                        , sections[[ "Section" ]][ rw ] )
                       , format = "pandoc"
                       )
         )
}
#>
#> Section A
#>
#> Fiscal     One   Three   Two
#> --------  ----  ------  ----
#> 2016-17    419     348   391
#> 2017-18    499     353   445
#> 2018-19    463     357   423
#>
#>
#> Section B
#>
#> Fiscal     One   Three   Two
#> --------  ----  ------  ----
#> 2016-17    418     347   390
#> 2017-18    498     352   444
#> 2018-19    462     356   422
#>
############################

On Mon, 22 Oct 2018, Joel Maxuel wrote:

Hello all,

I am slowly picking away at a factsheet that will include several result
sets from a single tibble (there is a column identifying the section title)
and would like to have that value in the top left corner of each resulting
table.  When using the `spread` function, I see that any remaining columns
not identified by `key` nor `value` will be placed to the far left.

Like the example below, I would like the column label Fiscal be renamed to
the data value "A", so the top-left of the result is "A".  However, if I
try to progmatically set the column name, I run into issues:


library(knitr)
library(tidyverse)
library(tibble)
library(dplyr)
library(magrittr)

testset <- as_tibble(tribble(~Section, ~Observation, ~Order, ~Fiscal,
~Value,
                            "A", "One", 1, "2016-17", 419,
                            "A", "One", 1, "2017-18", 499,
                            "A", "One", 1, "2018-19", 463,
                            "A", "Two", 2, "2016-17", 391,
                            "A", "Two", 2, "2017-18", 445,
                            "A", "Two", 2, "2018-19", 423,
                            "A", "Three", 3, "2016-17", 348,
                            "A", "Three", 3, "2017-18", 353,
                            "A", "Three", 3, "2018-19", 357))
sectionA <- as_tibble(filter(testset, Section == "A")) # Mind you for this
example, does very little
spread(select(sectionA, Observation, "A" = Fiscal, Value), key=Observation,
value=Value) # Works, with reservations
spread(select(sectionA, Observation, slice(sectionA,1) %>%
magrittr::extract2("Section") = Fiscal, Value), key=Observation,
value=Value) # Produces error:
# Error: unexpected '=' in "spread(select(sectionA, Observation,
slice(sectionA,1) %>% magrittr::extract2("Section") ="


I presume my premise is very wrong.

Also, I am curious how to sort columns (and rows) with extra columns
(/rows) not meant for display.  In this case, the columns One, Two, and
Three (in real life won't be linguistic representations of numbers), are
out of order - however I do have the Order column to fix that (if I knew
how to include it for sorting purposes, without displaying it).  A few
hints here would help.  (Perhaps there is column/row hiding in kableExtra -
which I will be using later on?)

--
Cheers,
Joel Maxuel

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to