Ramka danych R: jak tworzyć, dołączać, wybierać i podzbiór
Co to jest ramka danych?
A ramka danych jest listą wektorów o jednakowej długości. Macierz zawiera tylko jeden typ danych, podczas gdy ramka danych akceptuje różne typy danych (liczbowe, znakowe, współczynnikowe itp.).
Jak utworzyć ramkę danych
Możemy utworzyć ramkę danych w R przekazując zmienną a,b,c,d do funkcji data.frame(). Możemy R utworzyć ramkę danych i nazwać kolumny za pomocą name() i po prostu podać nazwę zmiennych.
data.frame(df, stringsAsFactors = TRUE)
Argumenty:
- df: Może to być macierz do przekształcenia w ramkę danych lub zbiór zmiennych do połączenia
- ciągiAsFactors: Domyślnie konwertuj ciąg na współczynnik
Możemy utworzyć ramkę danych w R dla naszego pierwszego zestawu danych, łącząc cztery zmienne o tej samej długości.
# Create a, b, c, d variables a <- c(10,20,30,40) b <- c('book', 'pen', 'textbook', 'pencil_case') c <- c(TRUE,FALSE,TRUE,FALSE) d <- c(2.5, 8, 10, 7) # Join the variables to create a data frame df <- data.frame(a,b,c,d) df
Wyjście:
## a b c d ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0 ## 3 30 textbook TRUE 10.0 ## 4 40 pencil_case FALSE 7.0
Widzimy, że nagłówki kolumn mają taką samą nazwę jak zmienne. Nazwę kolumny w R możemy zmienić za pomocą funkcji Names(). Sprawdź poniższy przykład tworzenia ramki danych w R:
# Name the data frame names(df) <- c('ID', 'items', 'store', 'price') df
Wyjście:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0 ## 3 30 textbook TRUE 10.0 ## 4 40 pencil_case FALSE 7.0
# Print the structure str(df)
Wyjście:
## 'data.frame': 4 obs. of 4 variables: ## $ ID : num 10 20 30 40 ## $ items: Factor w/ 4 levels "book","pen","pencil_case",..: 1 2 4 3 ## $ store: logi TRUE FALSE TRUE FALSE ## $ price: num 2.5 8 10 7
Domyślnie ramka danych zwraca zmienne łańcuchowe jako współczynnik.
Wytnij ramkę danych
Możliwe jest cięcie wartości ramki danych. Wybieramy wiersze i kolumny, które mają powrócić do nawiasu poprzedzonego nazwą ramki danych.
Ramka danych składa się z wierszy i kolumn, df[A, B]. A reprezentuje wiersze, a B kolumny. Możemy dokonać podziału, określając wiersze i/lub kolumny.
Na rysunku 1 lewa część przedstawia wydziwianie, a prawa część to kolumny. Należy pamiętać, że symbol : oznacza do. Na przykład 1:3 ma na celu wybranie wartości z 1 do 3.
Na poniższym schemacie pokazujemy, jak uzyskać dostęp do różnych wybranych ramek danych:
- Żółta strzałka wybiera rząd 1 w kolumna 2
- Zielona strzałka wybiera wydziwianie 1 do 2
- Czerwona strzałka wybiera kolumna 1
- Niebieska strzałka wybiera wydziwianie 1 do 3 i kolumny 3 do 4
Zauważ, że jeśli pozostawimy lewą część pustą, R wybierze wszystkie rzędy. Analogicznie, jeśli pozostawimy prawą część pustą, R dokona wyboru wszystkie kolumny.
Kod możemy uruchomić w konsoli:
## Select row 1 in column 2 df[1,2]
Wyjście:
## [1] book ## Levels: book pen pencil_case textbook
## Select Rows 1 to 2 df[1:2,]
Wyjście:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0
## Select Columns 1 df[,1]
Wyjście:
## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4 df[1:3, 3:4]
Wyjście:
## store price ## 1 TRUE 2.5 ## 2 FALSE 8.0 ## 3 TRUE 10.0
Możliwy jest także wybór kolumn wraz z ich nazwami. Na przykład poniższy kod wyodrębnia dwie kolumny: ID i store.
# Slice with columns name df[, c('ID', 'store')]
Wyjście:
## ID store ## 1 10 TRUE ## 2 20 FALSE ## 3 30 TRUE ## 4 40 FALSE
Dołącz kolumnę do ramki danych
Możesz także dołączyć kolumnę do ramki danych. Musisz użyć symbolu $, aby dołączyć zmienną R ramki danych i dodać kolumnę do ramki danych w R.
# Create a new vector quantity <- c(10, 35, 40, 5) # Add `quantity` to the `df` data frame df$quantity <- quantity df
Wyjście:
## ID items store price quantity ## 1 10 book TRUE 2.5 10 ## 2 20 pen FALSE 8.0 35 ## 3 30 textbook TRUE 10.0 40 ## 4 40 pencil_case FALSE 7.0 5
Uwaga: Liczba elementów w wektorze musi być równa liczbie elementów w ramce danych. Wykonanie następującego polecenia w celu dodania kolumny do ramki danych R
quantity <- c(10, 35, 40) # Add `quantity` to the `df` data frame df$quantity <- quantity
Daje błąd:
Error in ` lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40)) replacement has 3 rows, data has 4
Wybierz kolumnę ramki danych
Czasami musimy zapisać kolumnę ramki danych do wykorzystania w przyszłości lub wykonać operację na kolumnie. Możemy użyć znaku $, aby wybrać kolumnę z ramki danych.
# Select the column ID df$ID
Wyjście:
## [1] 1 2 3 4
Podzbiór ramki danych
W poprzedniej sekcji wybraliśmy całą kolumnę bez warunku. Jest to możliwe podzbiór na podstawie tego, czy dany warunek był spełniony, czy też nie.
Używamy funkcji subset().
subset(x, condition) arguments: - x: data frame used to perform the subset - condition: define the conditional statement
Chcemy zwrócić tylko produkty z ceną powyżej 10, możemy zrobić:
# Select price above 5 subset(df, subset = price > 5)
Wyjście:
ID items store price 2 20 pen FALSE 8 3 30 textbook TRUE 10 4 40 pencil_case FALSE 7