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.