Projekt R

Podstawy R – Analiza danych cz.1 „Wczytanie”

Wiemy, już jak w R są przechowywane dane oraz jak wykorzystać instrukcje warunkowe, pętle i funkcje do ich przetwarzania. Język R to jednak wspaniałe narzędzie stworzone głównie do analizy dużych zbiorów danych. W kilku postach przedstawimy Wam jego możliwości w tym zakresie. Zaczniemy od wczytania dane, a następnie przejdziemy do liczenia podstawowych statystyk opisowych i prezentacji wyników na wykresach. Do zaprezentowania narzędzi wykorzystamy tabelę zawierającą zestawienie ludności dla polskich powiatów (pobierz).

Podstawowym narzędziem do wczytywania danych jest read.table, które wczytuje zbiory zapisane w postaci tabelarycznej. Przed wczytywaniem konkretnego pliku koniecznie musimy przejrzeć jego strukturę i stwierdzić, czy:

  • zawiera on nagłówek (header),
  • jak rozdzielone są kolumny – w przypadku, gdy w tabeli nie występują spacje możemy nie podawać tego parametru (sep).

Użycie parametrów tej funkcji pokażemy na przykładzie. W naszym pliku znajdują się powiaty o nazwach dwuczłonowych np. Jelenia Góra. Spróbujmy wczytać nasz plik bez żadnych dodatkowych atrybutów:

data = read.table(“D:/powiaty_ludność.txt")

W wyniku otrzymujemy błąd powiadamiający nas że linia 28 pliku nie zawiera 7 elementów jak wcześniej wczytywane. W tej linii znajduje się właśnie dwuczłonowa nazwa miasta, którą funkcja automatycznie dzieli na dwa elementy:

data = read.table(„D:/Moje/Geoprofesja/powiaty_ludność.txt”)

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :

 line 28 did not have 7 elements

Wyeliminowanie tego błędu jest możliwe poprzez dodanie dwóch wspomnianych wcześniej parametrów. Wczytajmy jeszcze raz plik definiując tym razem obecność nagłówka i separatora kolumn (“\t” – tabulator):

data = read.table(“D:/powiaty_ludność.txt", header = TRUE, sep = “\t”)

Dane wczytały się bez problemu. Wyświetlmy kilka pierwszych wierszy korzystając z funkcji head:

head(data)

 identyfikator             powiat  województwo pow_ha pow_km2 ludność ludność_km2

1           201      bolesławiecki dolnośląskie 130351    1304   90306          69

2           202     dzierżoniowski dolnośląskie  47851     479  104613         219

3           203          głogowski dolnośląskie  44327     443   90302         204

4           204           górowski dolnośląskie  73827     738   36391          49

5           205           jaworski dolnośląskie  58155     582   52070          90

6           206      jeleniogórski dolnośląskie  62714     627   65171         104

Narzędzie read.table ma wiele innych parametrów, którymi możemy definiować zakres danych wczytywanych do zmiennej. Są jeszcze dwie prostsze funkcje będące jej pochodną read.csv i read.delim. Z szczegółowym opisem parametrów tych funkcji można się zapoznać korzystając z help.

help("read.csv")

W przypadku, gdy nasze dane nie mają postaci tabelarycznej, a chcielibyśmy je wczytać do R możemy to zrobić narzędziem readLines. Narzędzie to wczytuje poszczególne linie pliku jako ciągi znaków, co umożliwia nam późniejsze edytowanie każdej z linii w zależności od tego jakie dane zawierają. Do czego to można wykorzystać? Na przykład do edytowania plików konfiguracyjnych, w których chcemy zmienić jakiś konkretny fragment tekstu.

Wczytajmy nasz plik z ludnością w powiatach używając wspomnianego narzędzia:

data = readLines("D:/powiaty_ludność.txt")

Wyświetlmy drugi element zmiennej data:

data[2]
[1] "0201\t    bolesławiecki\tdolnośląskie\t130351\t1304\t90306\t69"

Widzimy, że wyświetlana jest jako ciąg znaków cała zawartość linijki 2 z pliku tekstowego, którą możemy dowolnie modyfikować.

Wspomniane funkcje są domyślnie zainstalowane w środowisku. R daje nam również możliwość wczytywania innych rodzajów plików poprzez znane już nam rozszerzające jego funkcjonalność pakiety. Z takiego rozszerzenia skorzystaliśmy na przykład przy wczytywaniu pliku shapefile, ale również możemy pobrać rozszerzenie do załadowania pliku popularnego arkusza kalkulacyjnego Excel. Musimy najpierw zainstalować i zainicjować bibliotekę xlsx. Wczytywanie pliku XLS odbywa się poprzez funkcję readxls z tej biblioteki. Korzystający z Excela wiedzą, że dane możemy przechowywać w różnych arkuszach. Funkcja readxls umożliwia wczytanie danych z poszczególnych arkuszy poprzez parametr sheetIndex w którym należy zdefiniować ich indeks :

data = read.xlsx("D:/powiaty_ludność.xlsx", sheetIndex = 1)

Wczytane dane przed przystąpieniem do analiz należy przeanalizować (eksploracja danych) w celu wyeliminowania błędów, które mogą wpłynąć na wynik naszej analizy. O tym etapie przygotowania danych napiszemy już w kolejnym poście.