Narzędzia użytkownika

Narzędzia witryny


r_dplyr_tablice

To jest stara wersja strony!


Tablice dplyr-a

Wstęp

Tablice dplyr-a są uogólnieniem zwykłych ramek danych R. Uogólnienie to polega na tym, że:

  • Mogą przechowywać dane z różnych źródeł:
    • zwykłej ramki danych R;
    • ramki danych data.table;
    • zapytania SELECT wykonanego na SQL-owej bazie danych.
  • Niezależnie od tego, z jakiego źródła pochodzą dane w tablicy dplyr-a:
    • dla funkcji R operujących na ramkach danych R tablica dplyr-a zachowuje się jak zwykła ramka danych R;
    • można na niej wykonywać dokładnie ten sam zestaw operacji (czasowników) udostępnianych przez pakiet dplyr;
      • operacje te wykonują się typowo wielokrotnie szybciej niż ich klasyczne odpowiedniki w R (z pakietu base).

Powyższe cechy powodują, że tablice dplyr-a są bardzo atrakcyjnym zamiennikiem dla klasycznych ramek danych R.

Tworzenie

Z ramki danych R

  • Wszystkie czasowniki radzą sobie z przetwarzaniem ramek danych R, więc nie ma potrzeby przekształcania ramek danych R na tablice dplyr.
  • Jeśli kluczowa jest wydajność, można przekształcić ramkę danych R na tablicę dplyr-a korzystającą z backend-u data.table:
    library(data.table)
    library(dplyr)
    daneDf = read.csv2('mojeDane.csv')
    daneTbl = tbl_dt(daneDf)

Z grupy danych w bazie

Funkcje pakietu ZPD pobierające grupy danych z bazy zwracają tablice dplyr-a, nie trzeba ich więc konwertować.

Z dowolnego zapytania SQL wykonanego na bazie

  • Nawiąż połączenie z bazą danych funkcją polacz() pakietu ZPD.
  • Utwórz tablicę dplyr kombinacją funkcji tbl() oraz sql()
library(ZPD)
src = polacz()
dane = tbl(src, sql("SELECT * FROM kryteria_oceny JOIN pytania USING (id_pytania)")

[w ten sposób działają wewnętrznie funkcje pakietu ZPD pobierający grupy danych z bazy]

Konwersja na ramkę danych

Generalnie operacja taka nie powinna być do niczego potrzebna, gdyż:

  • dla funkcji operujących na ramkach danych R tablice dplyr-a zachowują się jak zwykłe ramki danych;
  • konwertując tablicę dplyr-a na ramkę danych tracimy możliwości, które dawała nam tablica dplyr-a.

Jeśli jednak istnieje taka potrzeba, wystarczy skorzystać z funkcji as.data.frame(), np.

library(ZPD)
src = polacz()
testyTbl = pobierz_testy()
testyDf = as.data.frame(testyTbl)

Przy tym:

  • Jeśli tablica dplyr-a pochodzi z bazy danych, wywołanie as.data.frame() spowoduje najpierw przekształcenie jej w tablicę lokalną (wywołanie czasownika /collect()).
  • Jeśli na tablicy dplyr-a określone zostało (czasownikiem group_by()) grupowanie, ale nie została wykonana (czasownikiem summarize()) agregacja, to ramka danych R będzie zawierała dane niezagregowane.
r_dplyr_tablice.1422613402.txt.gz · ostatnio zmienione: 2015/01/30 11:23 przez zozlak