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.

Wytnij ramkę danych

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.

Wytnij ramkę danych

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