-
Notifications
You must be signed in to change notification settings - Fork 1
1.5.4.1 Tabele w markdown
Język markdown udostępnia kilka wariantów opisu tabel. Poniżej opisane zostały dwa najważniejsze z nich. Pełen, najbardziej aktualny opis znaleźć można w dokumentacji pakietu rmarkdown.
Uwaga! Żaden dostępny w języku markdown sposób opisu tabel nie umożliwia scalania komórek (dokładnie jest to ograniczenie programu Pandoc). Aby stworzyć zaawansowane tabele (np. ze scalonymi komórkami albo dowolnie określonymi ramkami komórek) należy użyć wstawek w LaTeX-u, co opisano w rozdziale 1.5.4.2.
Najprostszym sposobem definiowania tablic są tzw. pipe tables, w których:
- każda linia oznacza jeden wiersz tabeli;
- separatorem kolumny jest pionowa kreska:
|
; - nagłówek od treści tabeli oddzielany jest specjalną linią, która pozwala określić wyrównanie kolumn (wyrównanie wartości samych komórek w ramach szablonu nie ma żadnego znaczenia dla ich wyrównania w wygenerowanym raporcie – patrz przykład poniżej).
Przykładem tego typu tabeli może być:
kolumna wycentrowana | wyrównana do lewej | wyrównana do prawej
:-------------------:|:-------------------|-------------------:
1 | 2 | tekst
2 | 10 | inny tekst
Uwaga! W wypadku tego typu tabel zawartość komórek musi zmieścić się w jednym wierszu. W wypadku, gdy potrzebna jest tablica z komórkami zawierającymi wiele linijek, należy skorzystać z opisanych w dalszej części rozdziału multiline tables.
Uwaga! Poszczególne kolumny w kolejnych wierszach nie muszą na siebie nachodzić – zupełnie poprawny (choć niepolecany z uwagi na niską czytelność szablonu raportu) jest np. zapis:
kolumna1 | kolumna2
:-:|-:
1 | 2
234 | 4598
W tabeli można wstawiać obliczone wartości statystyk – nie różni się to niczym od wstawiania ich poza tabelą (patrz rozdziały 1.5.2 i 1.5.3), np.:
kolumna wyśrodkowana | wyrównana do lewej | wyrównana do prawej
:-------------------:|:-------------------|--------------------:
`r E(zmienna)` | 2 | `r Q(zmienna, 1, 4)`
`r N(zmienna)` | 10 | inny tekst
Składnia multiline tables umożliwia tworzenie tabel, w których zawartość komórek podzielona będzie na wiele wierszy. W tym wypadku:
- Tabela rozpoczyna się linią składającą się z myślników (
-
). - Następnie następuje nagłówek tabeli
- Może się on składać z wielu linii (podział na kolumny wyznacza linia kończąca nagłówek – patrz niżej).
- Położenie tekstu nagłówka względem linii podziału kolumn decyduje o wyrównaniu kolumn (patrz przykład poniżej).
- Nagłówek kończy linia składająca się z myślników (
-
) rozdzielnych spacjami.- miejsca występowania spacji oznaczają granice kolumn.
- Później następuje opis zawartości tabeli.
- Separatorem wiersza jest pusta linia.
- Każdy wiersz tablicy może się składać z wielu linii (jednak w wynikowej tablicy połamane zostaną one automatycznie, niekoniecznie zgodnie z łamaniem w szablonie).
- Podział na kolumny następuje na pozycjach wskazywanych przez spacje w wierszu oddzielającym nagłówek tabeli od jej zawartości.
- Tabela kończy się linią składającą się z myślników (
-
) i następująca po niej pusta linia.
W tabeli można wstawiać obliczone wartości statystyk – nie różni się to niczym od wstawiania ich poza tabelą (patrz rozdziały 1.5.2 i 1.5.3), np.:
Przykładem tego typu tablicy może być:
---------------------------------------------------------------
Kolumna Wyrównana do prawej
wyśrodkowana do lewej
-------------- ------------ -----------------------------------
`r E(zmienna)` 2 `r Q(zmienna, 1, 4)`
`r N(zmienna)` 10 komórka, której zawartość
może zajmować wiele linii
zarówno w szablonie raportu,
jak i w wygenerowanym raporcie
---------------------------------------------------------------
Uwaga! Dla poprawnego sformatowania multiline tables kluczowe znaczenie ma odpowiednie wyrównanie treści tabeli względem linii podziału kolumn.
Załóżmy, że dysponujemy prostym zbiorem danych postaci:
Przedmiot | Ocena |
---|---|
1 | 2 |
1 | 3 |
1 | 3 |
1 | 2 |
1 | 4 |
2 | 3 |
2 | 4 |
2 | 5 |
2 | 5 |
2 | 3 |
2 | Brak danych |
2 | Brak danych |
zapisanym w pliku dane.csv
oraz zbiorem odbiorców:
Odbiorca |
---|
X |
zapisanym w pliku odbiorcy.csv
.
Dla takich danych przygotować możemy szablon raportu ilustrujący wykorzystanie tabel, wykorzystujący jednocześnie funkcje obliczające statystyki w podziale na grupy (patrz rozdziały 1.5.2 i 1.5.3):
---
title: "Przykłady tabel"
output: pdf_document
---
```{r, echo = FALSE, message = FALSE, warning = FALSE}
library(MLAK)
wczytajOdbiorce('odbiorcy.csv', 'dane.csv')
```
```{r}
fPrz1 = Przedmiot %in% 1
fPrz2 = Przedmiot %in% 2
```
Przedmiot | Liczba obserwacji | Średnia ocena
:----------:|------------------------:|-----------------------:
Przedmiot 1 | `r N(Przedmiot[fPrz1])` | `r E(Przedmiot[fPrz1])`
Przedmiot 2 | `r N(Przedmiot[fPrz2])` | `r E(Przedmiot[fPrz2])`
---------------------------------------------------------------
Przedmiot Liczba obserwacji Średnia ocena
------------ ------------------------- ------------------------
Przedmiot 1 `r N(Przedmiot[fPrz1])` `r E(Przedmiot[fPrz1])`
Przedmiot 2 `r N(Przedmiot[fPrz2])` `r E(Przedmiot[fPrz2])`
------------ ------------------------- ------------------------