Wykład 4

Author

Jakub Wilk

Published

November 3, 2023

1 Importowanie danych

  • file.create(...) - Funkcja tworzy pliki o zadanych nazwach, jeżeli takie pliki istnieją, to ich zawartość jest kasowana.
  • file.exists(...) - Funkcja sprawdza, czy pliki o zadanych nazwach istnieją.
  • file.remove(...) - Funkcja usuwa pliki o zadanych nazwach (patrz też funkcja unlink()).
  • file.rename(from, to) - Funkcja zmienia nazwę pojedynczego pliku.
  • file.append(file1, file2) - Funkcja dokleja plik o nazwie file2 do pliku file1.
  • file.copy(from, to, overwrite=FALSE) - Funkcja do kopiowania pliku z from w pozycję wskazaną przez argument to.
  • file.symlink(from, to) - Funkcja do tworzenia linków symbolicznych (pod Unixami).
  • dir.create(path, showWarnings=TRUE, recursive=FALSE) - Funkcja do tworzenia katalogów. Wynikiem tej funkcji jest wartość TRUE, jeżeli operacja utworzenia katalogu została wykonana pomyślnie. Jeżeli dany katalog już istnieje lub nie udało go się utworzyć funkcja przekazuje wartość FALSE.
  • file.info(...) - Wynikiem tej funkcji są informacje o wskazanych plikach.
  • file_test(op, x, y) - Funkcja do testowania plików. Dostępne testy to: jednoargumentowe (tylko x jest używane) op=“-f” istnieje i nie jest katalogiem, op=“-d” istnieje i jest katalogiem oraz dwuargumentowe op=“-nt” jest młodszy niż (pod uwagę brane są daty modyfikacji) i op=“-ot” jest starszy niż.
  • file.show(...) - Funkcja wyświetla w oknie R zawartość jednego lub większej liczby plików.

2 read.table() → wczytuje dane

  • file - ścieżka do pliku z danymi, może być też adres URL. Jeżeli wartości argumentów podajemy w ich domyślnej kolejności, to możemy pominąć nazwy argumentów (dlatego w kolejnych przykładach nie będziemy podawać nazwy tego argumentu).
  • header - flaga określająca, czy pierwszy wiersz należy traktować jako nagłówek. W naszym przypadku header=TRUE.
  • sep - znak rozdzielający kolumny. W naszym przypadku sep=“;”, ale popularnymi separatorami są również znak tabulacji (oznaczany , przecinek lub spacja. Separatorem może być dowolny, ale tylko jeden znak.
  • dec - separator dziesiętny. Zazwyczaj jest to . lub ,. W naszym przypadku dec=“,”.
  • nrows - maksymalna liczba wierszy do wczytania. Domyślnie ten argument przyjmuje wartość -1, czyli wczytaj wszystkie wiersze.
  • skip - liczba pierwszych wierszy do pominięcia od góry przy wczytywaniu danych, domyślnie 0, czyli nie pomijaj żadnego wiersza.
  • comment.char - znak komentarza. Jeżeli w danych wystąpi ten znak to treść od tego znaku do końca linii będzie zignorowana.
  • stringsAsFactors - czy napisy powinny być domyślnie przekształcone w zmienne jakościowe. Domyślnie TRUE.
dane <-  read.table(    
    file = "dane1_srednik.txt", # lokalizacja i nazwa pliku    
    header = TRUE,                   # czy zawiera nazwy kolumn    
    sep = ";",                       # separtor wartosci    
    dec = "."                        # separator miejsca dzisiętnego  
) 

2.1 CVS

read.csv("dane/dane1_srednik.csv", sep = ";") -> dane6
dane7 <- read.table(file = "http://biecek.pl/MOOC/dane/koty_ptaki.csv", 
                    sep=";", dec=",", header=TRUE)
read.csv(file = "http://biecek.pl/MOOC/dane/koty_ptaki.csv", sep = ";") -> dane7

2.2 XLSX - Excel

  • zainstalować i załadować pakiet openxlsx
  • dane <- read.xlsx("dane/dwa_arkusze.xlsx", sheet = 1)

2.3 Pliki binarne - format R

load(url("http://biecek.pl/MOOC/dane/koty_ptaki.rda"))
load("dane.RData")

3 Zapisywanie danych

3.1 rio

  • inteligentna funkcja, sama dobiera skip
  • rio::import(file = "dane/dane3_brudny.txt")

3.2 write.table

write.table(
  dane,
  file = "write1.txt",
  sep = ";",
  dec = ".",
  row.names = F,
  col.names = T
)

write.table(
  dane,
  file = "write2.csv",
  sep = ",",
  dec = ".",
  row.names = F,
  col.names = T
)

write.csv(dane, file = "write3.csv", row.names = F)

write.xlsx(zwierz, file = "zwierz.xlsx")

save(dane, dane2, zwierz, koty_ptaki,
     file = "dane_all.RData") # można od razu zapisać kilka

file.remove(c(  "dane_all.RData",  "write1.txt",  "write2.csv",  
"write3.csv",  "zwierz.xlsx"))

4 Pakiet readr

4.1 Usuwanie braków

stud <-
  read_csv(file = "https://pos.it/r4ds-students-csv", 
           na = c("N/A", ""))
stud
# zamienia "" na N/A

stud <-
  rename(stud,
         student_id = `Student ID`,
         full_name = `Full Name`)

#zamiana nazw

4.2 read_

read_csv(
  "Pierwsza linia
  druga linia
  a,b,c
  1,2,3
  4,5,6",
  skip = 2
)

4.3 Inne typy plików

  • read_csv2() czyta pliki oddzielone średnikami. Używa się ich ;zamiast ,oddzielać pola i jest powszechne w krajach, w których stosuje się ,znacznik dziesiętny.
  • read_tsv() czyta pliki rozdzielane tabulatorami.
  • read_delim() wczytuje pliki z dowolnym ogranicznikiem, próbując automatycznie odgadnąć ogranicznik, jeśli go nie określisz.
  • read_fwf() czyta pliki o stałej szerokości. Możesz określić pola według ich szerokości za pomocą fwf_widths() lub według ich pozycji za pomocą fwf_positions().
  • read_table() odczytuje popularną odmianę plików o stałej szerokości, w których kolumny są oddzielone białym znakiem.
  • read_log() czyta pliki dziennika w stylu Apache.

5 CHEATSHEET

CHEATSHEET - 1

Base R

Data import