Importuj dane w R: czytaj pliki CSV, Excel, SPSS, Stata, SAS
⚡ Inteligentne podsumowanie
Import danych w R obejmuje odczyt plików CSV za pomocą read.csv(), arkuszy kalkulacyjnych Excela za pomocą readxl oraz plików SAS, STATA lub SPSS za pomocą haven. Ten przewodnik pokazuje również, jak precyzyjnie zaznaczać arkusze, wiersze i zakresy komórek podczas importowania.

Dane mogą występować w różnych formatach. Dla każdego formatu R ma określoną funkcję i argument. W tym samouczku wyjaśniono, jak importować dane do R.
Odczyt plików CSV
Najczęściej używanym formatem danych jest .csv, czyli wartości rozdzielone przecinkami. R ładuje tablicę bibliotek podczas uruchamiania, w tym pakiet utils. Pakiet ten udostępnia funkcję read.csv(), standardowy sposób otwierania pliku CSV. Oto składnia:
read.csv(file, header = TRUE, sep = ",")
Argument:
- filet: ŚCIEŻKA, w której przechowywany jest plik
- nagłówek: potwierdź, czy plik ma nagłówek, czy nie, domyślnie nagłówek jest ustawiony na TRUE
- września: symbol używany do podziału zmiennej. Domyślnie `,`.
Odczytamy nazwę pliku danych mtcats. Plik CSV jest przechowywany online. Jeśli plik .csv jest przechowywany lokalnie, możesz zastąpić PATH wewnątrz fragmentu kodu. Nie zapomnij zawinąć go do środka. PATH musi być wartością typu string.
W przypadku użytkowników komputerów Mac ścieżka do folderu pobierania to:
"/Users/USERNAME/Downloads/FILENAME.csv"
Dla użytkowników systemu Windows:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Pamiętaj, że zawsze powinniśmy określić rozszerzenie nazwy pliku.
- . Csv
- . Xlsx
- txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
Wyjście:
## [1] 12
class(df$X)
Wyjście:
## [1] "factor"
W wersjach R wcześniejszych niż 4.0.0, read.csv() konwertował każdą kolumnę znakową na współczynnik, dlatego class(df$X) zwraca powyżej „współczynnik”. Można to wyłączyć za pomocą stringsAsFactors = FALSE.
⚠️ Uwaga dotycząca wersji: ponieważ R 4.0.0 Domyślnie stringsAsFactors = FALSE, więc kolumny znakowe pozostają znakowe, a pierwszy przykład zwraca teraz „znak” w nowoczesnej instalacji. Jawne przekazanie argumentu, jak poniżej, daje ten sam wynik w każdej wersji i jest najbezpieczniejszym nawykiem.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
Wyjście:
## [1] "character"
Klasa zmiennej X jest teraz znakiem.
read.csv() vs read_csv(): Którego powinieneś użyć?
Funkcja read.csv() jest dostarczana z bazą R i nie wymaga pakietu. Pakiet readr dodaje funkcję read_csv(), która jest szybsza i podejmuje mniej decyzji za użytkownika.
| kryteria | read.csv() (narzędzia) | read_csv() (odczyt) |
|---|---|---|
| Potrzebny pakiet | żaden | czytać |
| Prędkość dużych plików | Wolniej | Kilka razy szybciej |
| Zwroty | ramka danych | łkać |
| Nazwy kolumn | Spacje zamienione na kropki | Zachowane dokładnie tak, jak napisano |
| Wykrywanie typu | milczący | Zgłoszono w specyfikacji kolumny |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Użyj read.csv() w przypadku małych plików i skryptów, które muszą działać bez dodatkowych pakietów. Użyj read_csv(), gdy plik jest duży lub gdy ważne jest zachowanie dokładnych nazw kolumn.
Odczyt plików Excel
przewyższać pliki są bardzo popularne wśród analityków danych. Arkusze kalkulacyjne są łatwe w obsłudze i elastyczne. R jest wyposażony w bibliotekę readxl do importowania arkusza kalkulacyjnego Excel.
Użyj tego kodu
require(readxl)
aby sprawdzić, czy na twoim komputerze jest zainstalowany readxl. Jeśli zainstalujesz r z r-conda-essential, biblioteka jest już zainstalowana. Powinieneś zobaczyć w oknie poleceń:
Wyjście:
Loading required package: readxl.
Jeżeli pakiet nie jest zainstalowany, możesz go zainstalować za pomocą conda biblioteka lub w terminalu użyj conda install -c mittner r-readxl.
Użyj następującego polecenia, aby załadować bibliotekę i zaimportować pliki Excela.
library(readxl)
readxl_example()
W tym samouczku korzystamy z przykładów zawartych w pakiecie readxl.
Użyć kodu
readxl_example()
aby zobaczyć wszystkie dostępne arkusze kalkulacyjne w bibliotece.
Aby sprawdzić lokalizację konkretnego arkusza kalkulacyjnego, wprowadź jego nazwę:
readxl_example("geometry.xls")
Jeśli zainstalujesz R z Condą, arkusze kalkulacyjne znajdują się w Anaconda3/lib/R/library/readxl/extdata/filename.xls
czytaj_Excel()
read_excel() otwiera rozszerzenia .xls i .xlsx i automatycznie wybiera odpowiedni parser.
Składnia jest następująca:
read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE) arguments: -PATH: Path where the excel is located -sheet: Select the sheet to import. By default, all -range: Select the range to import. By default, all non-null cells -col_names: Select the columns to import. By default, all non-null columns
Możemy zaimportować arkusze kalkulacyjne z biblioteki readxl i policzyć liczbę kolumn w pierwszym arkuszu.
# Store the path of `datasets.xlsx` example <- readxl_example("datasets.xlsx") # Import the spreadsheet df <- read_excel(example) # Count the number of columns length(df)
Wyjście:
## [1] 5
arkusze_Excel()
Plik datasets.xlsx składa się z 4 arkuszy. Jakie arkusze są dostępne w skoroszycie, możemy dowiedzieć się, korzystając z funkcji Excel_sheets().
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
Wyjście:
[1] "iris" "mtcars" "chickwts" "quakes"
Jeśli arkusz zawiera wiele arkuszy, można łatwo wybrać konkretny arkusz za pomocą argumentów arkusza. Możemy podać nazwę arkusza lub indeks arkusza. Możemy sprawdzić, czy obie funkcje zwracają ten sam wynik za pomocą metody identycznej().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
Wyjście:
## [1] TRUE
Możemy kontrolować, które komórki czytać, na 2 sposoby
- Użyj argumentu n_max, aby zwrócić n wierszy
- Użyj argumentu zakresu w połączeniu z cell_rows lub cell_cols
Na przykład ustawiamy n_max równe 5, aby zaimportować pierwsze pięć wierszy.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Jeśli zmienimy nazwy_kolumn na FALSE, R automatycznie utworzy nagłówki.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
W ramce danych iris_no_header readxl wygenerował pięć nazw zastępczych. Starsze wersje generowały nazwy od X__1 do X__5, podczas gdy obecne wersje generowały nazwy od …1 do …5.
Zakresu argumentów możemy także używać do wybierania wierszy i kolumn w arkuszu kalkulacyjnym. W poniższym kodzie używamy stylu Excela, aby wybrać zakres od A1 do B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
Wyjście:
## [1] 4 2
example_1 zwraca 4 wiersze i 2 kolumny. Zakres A1:B5 obejmuje pięć wierszy arkusza kalkulacyjnego, ale pierwszy jest używany jako nagłówek, dlatego wymiar wynosi 4x2.
W drugim przykładzie używamy funkcji cell_rows(), która kontroluje zakres zwracanych wierszy. Jeśli chcemy zaimportować wiersze od 1 do 5, możemy ustawić cell_rows(1:5). Zauważ, że cell_rows(1:5) zwraca ten sam wynik co cell_rows(5:1).
# Read rows 1 to 5 example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE) dim(example_2)
Wyjście:
## [1] 4 5
example_2, z kolei, ma wymiary 4 na 5. cell_rows(1:5) ponownie traktuje pierwszy wiersz jako nagłówek, więc zwracane są cztery wiersze danych we wszystkich pięciu kolumnach.
W przypadku, gdy chcemy zaimportować wiersze, które nie zaczynają się od pierwszego wiersza, musimy uwzględnić col_names = FALSE. Jeśli użyjemy zakresu = cell_rows(2:5), stanie się oczywiste, że nasza ramka danych nie ma już nagłówka.
iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE) iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)
Można również wybierać kolumny według litery, dokładnie tak jak w programie Excel:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
Wyjście:
## [1] 150 2
Uwaga: zakres = cell_cols(„A:B”), zwraca wszystkie komórki z wartością inną niż null. Zbiór danych zawiera 150 wierszy, dlatego funkcja read_excel() zwraca maksymalnie 150 wierszy. Sprawdza się to za pomocą funkcji dim().
Argument na wskazuje funkcji read_excel(), które wartości traktować jako brakujące. Zlicz je za pomocą sum() i is.na():
- suma
- jest.na
Oto kod
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Wyjście:
## [1] 50
Brakuje nam 50 wartości, które są wierszami należącymi do gatunku setosa.
Importuj dane z innego oprogramowania statystycznego
Pliki z innych pakietów statystycznych są importowane za pomocą przystań pakiet, który obsługuje SAS, STATA i SPSS. Możemy użyć następującej funkcji, aby otworzyć różne typy zbiorów danych, w zależności od rozszerzenia pliku:
- SAS: read_sas()
- STATA: read_dta() (lub read_stata(), które są identyczne)
- SPSS: read_sav() lub read_por(). Musimy sprawdzić rozszerzenie
Każda z tych funkcji potrzebuje tylko jednego argumentu, ścieżki PATH, pod którą przechowywany jest plik, i każda akceptuje URL tak samo łatwo jak ścieżka lokalna.
library(haven)
haven jest wyposażony w conda r-essential, w przeciwnym razie przejdź do link lub w terminalu conda install -c conda-forge r-haven
Odczyt plików SAS
W naszym przykładzie użyjemy zestawu danych dotyczących przyjęć z IDRE.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
Wyjście:
## # A tibble: 6 x 4 ## ADMIT GRE GPA RANK ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
Odczytaj pliki STATA
W przypadku plików danych STATA możesz użyć funkcji read_dta(). Używamy dokładnie tego samego zbioru danych, ale przechowujemy je w pliku .dta.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
Wyjście:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
Odczyt plików SPSS
read_sav() otwiera plik SPSS z rozszerzeniem .sav.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Wyjście:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
Najlepsze praktyki dotyczące importu danych
Przeprowadzenie kontroli za pomocą poniższej listy kontrolnej przed importowaniem pozwoli zaoszczędzić większość późniejszej pracy związanej z czyszczeniem:
- Typowym formatem arkusza kalkulacyjnego jest użycie pierwszych wierszy jako nagłówka (zwykle nazwy zmiennej).
- Unikaj spacji w nazwie pliku lub kolumny, ponieważ mogą one zostać odczytane jako separatory kolumn. Zamiast nich użyj znaku podkreślenia.
- Preferowane są krótkie nazwy
- Nie używaj symboli w nazwie. Zamiast exchange_rate_$_€ wpisz exchange_rate_dollar_euro.
- Brakujące wartości koduj jako NA, a nie jako spacje, myślniki lub liczby pomocnicze, takie jak -99, które w przeciwnym razie musiałyby zostać później usunięte.
Importowanie danych w R: Odniesienie do funkcji
Poniższa tabela zawiera listę funkcji importu dla każdego typu pliku, bibliotekę, która ją udostępnia, oraz jej domyślne argumenty:
| Biblioteka | Cel | Funkcjonować | Argumenty domyślne |
|---|---|---|---|
| utils | Przeczytaj plik CSV | czytaj.csv() | plik, nagłówek = TRUE, sep = “,” |
| czytajxl | Przeczytaj plik EXCEL | czytaj_Excel() | ścieżka, zakres = NULL, nazwy_kolumn = PRAWDA |
| przystań | Przeczytaj plik SAS | czytaj_sas() | ścieżka |
| przystań | Przeczytaj plik STATA | odczyt_danych() / odczyt_stata() | ścieżka |
| przystań | Przeczytaj plik SPSS | czytaj_zapisz() | ścieżka |
Druga tabela pokazuje sposoby importowania zaznaczenia za pomocą read_excel():
| Funkcjonować | Cel | Argumenty |
|---|---|---|
| czytaj_Excel() | Przeczytaj n liczby wierszy | n_maks. = 10 |
| Wybierz wiersze i kolumny jak w programie Excel | zakres = „A1:D10” | |
| Wybierz wiersze z indeksami | zakres= wiersze_komórek(1:3) | |
| Wybierz kolumny z literami | zakres = cell_cols(“A:C”) |







