Zanim przejdziemy do tabel, poznajmy cegiełki, z których są zbudowane — podstawowe typy danych i wektory. To odpowiednik pojedynczej komórki i pojedynczej kolumny arkusza kalkulacyjnego.
2.1 Podstawowe typy danych
Każda wartość w R i Pythonie ma swój typ. Typ decyduje o tym, jakie operacje można na wartości wykonać.
# Liczby całkowite i rzeczywistewiek <-25L # integer (L oznacza "całkowity")wzrost <-175.5# numeric (domyślny typ liczbowy)# Tekst (łańcuch znaków)imie <-"Anna"# Wartości logiczneczy_student <-TRUEczy_pracuje <-FALSE# Brak danychwynik <-NA# odpowiednik pustej komórki w Excelu# Sprawdzenie typuclass(wiek)
#> [1] "integer"
class(imie)
#> [1] "character"
class(czy_student)
#> [1] "logical"
# Konwersja typówas.numeric("3.14") # tekst → liczba
# Liczby całkowite i rzeczywistewiek =25# intwzrost =175.5# float# Tekst (łańcuch znaków)imie ="Anna"# str# Wartości logiczneczy_student =True# bool (uwaga: wielka litera T!)czy_pracuje =False# Brak danychimport numpy as npwynik =None# ogólny brak wartości w Pythoniewynik_num = np.nan # brak wartości numerycznej (używany w pandas)# Sprawdzenie typuprint(type(wiek))print(type(imie))print(type(czy_student))
# Konwersja typówfloat("3.14") # tekst → liczbastr(42) # liczba → tekstbool(1) # liczba → logiczna (1 = True, 0 = False)
2.2 Wektory — kolumna danych
NoteCzym jest wektor?
Wyobraź sobie jedną kolumnę Excela. W R taka kolumna to wektor — sekwencja wartości tego samego typu. W Pythonie (pandas) to Series, a w NumPy — array. To fundamentalna jednostka danych, z której buduje się tabele.
# Tworzenie wektora — funkcja c() (od "combine")pensje <-c(4500, 5200, 4800, 6100, 5500)miasta <-c("Warszawa", "Kraków", "Gdańsk", "Poznań", "Wrocław")# Długość wektoralength(pensje)
#> [1] 5
# Podstawowe statystyki — operacje na CAŁYM wektorze jednocześniemean(pensje) # średnia
#> [1] 5220
median(pensje) # mediana
#> [1] 5200
sum(pensje) # suma
#> [1] 26100
max(pensje) # maksimum
#> [1] 6100
min(pensje) # minimum
#> [1] 4500
# Operacje wektorowe — R działa na całym wektorze, nie na elementach!# To jak wpisanie formuły w Excelu do całej kolumny naraz.pensje_po_podwyzce <- pensje *1.10# każda pensja +10%pensje_w_tys <- pensje /1000# przeliczenie na tysiącepensje_po_podwyzce
# Operacje wektorowe — tak samo jak R, działa na całej tablicy narazpensje_po_podwyzce = pensje *1.10# każda pensja +10%pensje_w_tys = pensje /1000# przeliczenie na tysiąceprint(pensje_po_podwyzce)print(pensje_w_tys)
2.3 Indeksowanie — wybieranie elementów
ImportantKluczowa różnica: od której liczby zaczynamy?
R liczy elementy od 1 — tak jak Excel i większość języków statystycznych.
Python liczy elementy od 0 — tak jak większość języków programowania ogólnego.
To jedna z najczęstszych przyczyn błędów przy przełączaniu się między językami!
pensje <-c(4500, 5200, 4800, 6100, 5500)# Wybieranie po indeksie — R liczy od 1pensje[1] # pierwsza pensja → 4500
#> [1] 4500
pensje[3] # trzecia pensja → 4800
#> [1] 4800
pensje[c(1, 3, 5)] # pierwsza, trzecia i piąta
#> [1] 4500 4800 5500
pensje[2:4] # od drugiej do czwartej (włącznie)
#> [1] 5200 4800 6100
pensje[-1] # bez pierwszego
#> [1] 5200 4800 6100 5500
pensje[length(pensje)] # ostatnia (jak Ctrl+End w Excelu)
#> [1] 5500
# Indeksowanie logiczne — wybieranie po warunkupensje[pensje >5000] # tylko pensje powyżej 5000
#> [1] 5200 6100 5500
pensje[pensje >mean(pensje)] # powyżej średniej
#> [1] 6100 5500
pensje = np.array([4500, 5200, 4800, 6100, 5500])# Wybieranie po indeksie — Python liczy od 0!pensje[0] # pierwsza pensja → 4500 (indeks 0!)pensje[2] # trzecia pensja → 4800 (indeks 2!)pensje[[0, 2, 4]] # pierwsza, trzecia i piątapensje[1:4] # od drugiej do czwartej (koniec WYŁĄCZONY!)pensje[-1] # ostatnia (ujemny indeks)
# Indeksowanie logiczne — wybieranie po warunkupensje[pensje >5000] # tylko pensje powyżej 5000pensje[pensje > np.mean(pensje)] # powyżej średniej
2.4 Zmienne jakościowe — factor i categorical
NoteCzym jest factor?
Wyobraź sobie kolumnę w Excelu z wartościami “niskie”, “średnie”, “wysokie”. Excel traktuje je jako zwykły tekst i sortuje alfabetycznie: “niskie”, “średnie”, “wysokie” — co akurat tutaj działa, ale “styczeń”, “luty”, “marzec” posortuje już błędnie: “luty”, “marzec”, “styczeń”.
Factor (R) i Categorical (Python) to typy danych które “wiedzą” jaka jest właściwa kolejność kategorii — niezależnie od alfabetu.