R i RStudio od zera — notatki i trening

Statystyka w zarządzaniu (ALK) · wszystko ze skryptu 3.10.R (plik 3_10.docx) przełożone na prosty język + ćwiczenia pisania komend.

1Czym jest R, a czym RStudio i jak wygląda ekran

To dwie osobne rzeczy, które instaluje się razem:

4 okna RStudio — co gdzie jest

1. Skrypt (Source)lewy górny
Twój „brudnopis na czysto” (plik .R, np. 3.10.R). Tu piszesz komendy i zapisujesz je na dysku. Samo napisanie linijki jeszcze jej nie uruchamia — musisz wcisnąć Cmd + Enter (Mac) lub Ctrl + Enter (Windows).
3. Środowisko (Environment)prawy górny
Lista wszystkich zmiennych (wektorów, tabel), które do tej pory utworzyłaś w pamięci (np. kasa, t). Od razu widzisz, jakie mają wartości.
2. Konsola (Console)lewy dolny
Tu R wykonuje polecenia i wypisuje wyniki (w skrypcie z zajęć wyniki są oznaczone przez ## [1] ...).
4. Wykresy i Pomoc (Plots / Help)prawy dolny
W zakładce Plots pojawiają się narysowane wykresy (barplot, hist), a w zakładce Help — opis funkcji (gdy wpiszesz np. ?hist).
Co oznacza [1] przed wynikiem w konsoli?
Gdy wpiszesz mean(kasa), R odpowiada: [1] 4. To [1] w nawiasie kwadratowym nie jest częścią wyniku — to tylko numer porządkowy mówiący: „obok zaczyna się pierwszy element wyniku”. Gdy wynik ma 5 liczb, np. [1] 0.16 0.16 0.25 1.50 0.33, oznacza to, że wszystkie 5 to elementy wektora począwszy od pierwszego.

25 złotych zasad składni R (na tym najłatwiej się pomylić)

ZasadaDobrze ✅Źle ❌Dlaczego
1. Strzałka <- przypisuje wartość kasa <- c(1, 2, 3) kasa - c(1, 2, 3) Czytaj <- jako „włóż do pudełka o nazwie…”. Skrót klawiszowy: Option + - (Mac) / Alt + - (Win).
2. Kropka w ułamkach, przecinek między liczbami c(1.5, 2.5, 10) c(1,5; 2,5; 10) W R kropka oddziela części dziesiętne (1.5 = półtora), a przecinek oddziela kolejne elementy lub argumenty funkcji.
3. Tekst zawsze w cudzysłowie c("smartfon", "laptop") c(smartfon, laptop) Bez cudzysłowu R myśli, że smartfon to nazwa zmiennej i szuka jej w pamięci (wyskoczy błąd object not found).
4. Nawiasy okrągłe vs kwadratowe mean(kasa)
kasa[3]
mean[kasa]
kasa(3)
Okrągłe ( ) = uruchom funkcję.
Kwadratowe [ ] = wyciągnij element z podanej pozycji.
5. Wielkość liter ma znaczenie + znak # mean(kasa)
# komentarz
Mean(Kasa) Dla R kasa i Kasa to dwie różne nazwy. Wszystko po znaku # to komentarz (notatka dla Ciebie, R ją ignoruje). Cztery myślniki na końcu komentarza (# sekcja ----) robią nagłówek rozdziału w RStudio.

3Wektory c() i wyciąganie elementów [ ] (cz. 1 skryptu z zajęć)

Podstawową strukturą w R jest wektor — czyli po prostu ciąg wartości tego samego typu (np. kolumna danych o jednej zmiennej dla kolejnych osób). Tworzymy go funkcją c() (od ang. combine — połącz).

A. Wektor liczbowy (numeryczny) i działania na nim

W skrypcie z zajęć (3.10.R) pierwsza zmienna to czas bez telefonu przed snem (w minutach) u 5 osób:

# wektor c() ----
## wektor numeryczny ----
czas_bez_tel_sen <- c(10, 10, 15, 90, 20)

mean(czas_bez_tel_sen)
## [1] 29

czas_bez_tel_sen / 60
## [1] 0.1666667 0.1666667 0.2500000 1.5000000 0.3333333

B. Wektor tekstowy i indeksowanie [ ]

Drugi przykład z zajęć to wektor z nazwami urządzeń:

## wektor tekstowy ----
jakie_urzadzenie_najcz <- c("smartfon", "laptop", "komputer", "tablet", "inne")

jakie_urzadzenie_najcz[3]
## [1] "komputer"

jakie_urzadzenie_najcz[c(1, 3)]
## [1] "smartfon" "komputer"
Jak działa wyciąganie elementów nawiasem [ ]:
  • W R elementy numerujemy od 1 (1 = "smartfon", 2 = "laptop", 3 = "komputer", 4 = "tablet", 5 = "inne").
  • Jeden element: jakie_urzadzenie_najcz[3] → wyciąga 3. element ("komputer").
  • Kilka wybranych elementów: jakie_urzadzenie_najcz[c(1, 3)] → wyciąga element 1. oraz 3.
Pułapka z zajęć: dlaczego piszemy jakie_urzadzenie_najcz[c(1, 3)], a nie jakie_urzadzenie_najcz[1, 3]?
Bo zapis [wiersz, kolumna] z samym przecinkiem służy w R do tabel dwuwymiarowych. Wektor ma tylko jeden wymiar, więc podajemy mu wektor pozycji za pomocą c(1, 3)!

4Średnia, mediana, rozkład liczebności i częstości (kasa)

Trzecia część skryptu 3.10.R to dokładnie te same dane, które były rozpisane na tablicy (wolne środki w tys. zł u 10 osób):

## wektor kasa ----
kasa <- c(1, 1, 2, 2, 3, 3, 6, 6, 6, 10)

# miary tendencji centralnej ----
## średnia ----
mean(kasa)
## [1] 4

## mediana ----
median(kasa)
## [1] 3

## rozkład liczebności, rozkład częstości i dominanta ----
table(kasa) # rozkład liczebności
## kasa
##  1  2  3  6 10 
##  2  2  2  3  1

prop.table(table(kasa)) # rozkład częstości
## kasa
##   1   2   3   6  10 
## 0.2 0.2 0.2 0.3 0.1

t <- table(kasa)
prop.table(t)
## kasa
##   1   2   3   6  10 
## 0.2 0.2 0.2 0.3 0.1

Jak czytać wynik table(kasa) i prop.table(t)?

R wypisuje tabelę w dwóch wierszach:

Wiersz w RCo oznacza na tablicyWartości
Górny wiersz (pod napisem kasa)Warianty zmiennej $x_i$ (jakie kwoty padały)1   2   3   6   10
Dolny wiersz w table(kasa)Liczebności $n_i$ (ile osób ma daną kwotę)2   2   2   3   1 (razem $N = 10$)
Dolny wiersz w prop.table(t)Częstości względne $n_i' = n_i/N$ = $P(X=x_i)$0.2   0.2   0.2   0.3   0.1 (razem $1.0$)
Pułapka 1 — Jak policzyć dominantę w R?
W podstawowym R nie ma gotowej funkcji na dominantę (uwaga: funkcja mode(kasa) w R nie liczy dominanty, tylko sprawdza typ danych i wypisze "numeric"!). Aby znaleźć dominantę, robisz table(kasa), szukasz największej liczebności w dolnym wierszu (3) i patrzysz, jaka wartość stoi nad nią w górnym wierszu (6). Dominanta $Mo = 6$, a jej częstość względna z prop.table to $0{,}3$.
Pułapka 2 — prop.table(table(kasa)), a nie prop.table(kasa)!
Funkcja prop.table() oczekuje w środku tabeli liczebności (dlatego piszemy prop.table(table(kasa)) albo najpierw zapisujemy t <- table(kasa) i potem prop.table(t)). Gdybyś wpisała prop.table(kasa), R podzieliłby każdą liczbę przez sumę kwot ($40$), a nie przez liczbę osób ($10$)!

5Wykresy: barplot() a hist() (cz. 3 skryptu z zajęć)

Na końcu zajęć pojawiły się dwa podstawowe wykresy:

# wykresy (cz.1) ----
## wykres słupkowy a histogram
barplot(t)
hist(kasa)
hist(kasa, main="wolne środki miesięcznie u 10 osób", xlab="kwota w tys zł", col="blue", border="green")

barplot(t) — wykres słupkowy

  • Co wkładamy do środka: tabelę t (czyli table(kasa)), a nie sam wektor!
  • Jak działa: rysuje osobny słupek dla każdej wartości z tabeli (dla 1, 2, 3, 6 i 10) o wysokości równej liczebności $n_i$ (2, 2, 2, 3, 1).
  • Do jakich zmiennych: niemierzalnych (nominalnych, porządkowych) oraz skokowych o małej liczbie wariantów.

hist(kasa) — histogram

  • Co wkładamy do środka: surowy wektor liczbowy kasa (nie tabelę!).
  • Jak działa: R sam dzieli oś liczbową na równe przedziały (np. 0–2, 2–4, 4–6, 6–8, 8–10) i zlicza, ile obserwacji wpada do każdego przedziału. Słupki przylegają do siebie.
  • Do jakich zmiennych: mierzalnych (ilościowych: ciągłych, quasi-ciągłych).

Argumenty upiększające wykres (po przecinku wewnątrz nawiasu)

ArgumentSkąd nazwaCo robi w przykładzie z zajęć
main = "..."main titleTytuł główny nad wykresem: main="wolne środki miesięcznie u 10 osób"
xlab = "..."X axis labelPodpis osi poziomej (X): xlab="kwota w tys zł" (analogicznie ylab podpisuje oś pionową Y)
col = "..."colorKolor wypełnienia słupków: col="blue"
border = "..."borderKolor obramowania (krawędzi) słupków: border="green"
Pamiętaj o cudzysłowie! Wszystkie napisy i nazwy kolorów w argumentach wykresu ("blue", "green", tytuł) muszą być w cudzysłowie " ".

6Ściąga w 30 sekund — wszystkie komendy z zajęć

Co chcesz zrobićKomenda w RNa co uważać
Utworzyć wektor liczbowyx <- c(10, 10, 15, 90, 20)Przecinki między liczbami, kropka w ułamku
Utworzyć wektor tekstowyu <- c("smartfon", "laptop")Każde słowo w cudzysłowie " "
Podzielić każdy element przez 60x / 60Działa na całym wektorze naraz
Wyciągnąć 3. element wektorau[3]Nawias kwadratowy [ ], numeracja od 1
Wyciągnąć 1. i 3. element wektorau[c(1, 3)]W środku [ ] musi być c(1, 3)
Policzyć średnią ($\bar{x}$)mean(kasa)Tylko dla wektora liczbowego
Policzyć medianę ($Me$)median(kasa)R sam posortuje dane w tle
Tabela liczebności ($n_i$) i dominanta ($Mo$)t <- table(kasa)Patrzysz, która wartość ma największą liczebność
Tabela częstości względnych ($n_i'$)prop.table(t) lub prop.table(table(kasa))W środku musi być wynik table()!
Wykres słupkowybarplot(t)Przyjmuje tabelę t
Histogramhist(kasa)Przyjmuje surowy wektor liczbowy kasa
Histogram z tytułem i koloramihist(kasa, main="...", xlab="...", col="blue", border="green")Napisy i kolory w " "

🏋️ Trening 1: Napisz komendę w R

Wpisz dokładną komendę w R (spacje wokół <- i po przecinkach są dowolne). Cel: seria 10 poprawnych komend z rzędu.

🏋️ Trening 2: Co wypisze R? (pytania pod wejściówkę)

Sprawdź, czy nie dasz się złapać na typowe pułapki z R.

7Jak zainstalować R i RStudio na Twoim Macu (w 3 minuty)

Sprawdziłem na Twoim komputerze — obecnie nie masz jeszcze zainstalowanego R ani RStudio. Jeśli chcesz mieć je u siebie na laptopie przed zajęciami, instaluje się je w 2 krokach (oba programy są darmowe):

  1. Krok 1 — zainstaluj R (silnik): wejdź na cran.r-project.org/bin/macosx i pobierz plik R-4.x.x-arm64.pkg (dla Maca z procesorem Apple M1/M2/M3/M4) lub x86_64.pkg (dla starszego Maca Intel) i kliknij „Dalej” jak przy zwykłym programie.
  2. Krok 2 — zainstaluj RStudio (program, w którym pracujesz): wejdź na posit.co/download/rstudio-desktop, kliknij przycisk pobierania dla macOS (plik .dmg) i przeciągnij ikonę RStudio do folderu Applications.

Mogę też zainstalować oba programy automatycznie z terminala (przez Homebrew), jeśli będziesz chciała.