R Data Frame: creëren, toevoegen, selecteren en subsetten

Wat is een dataframe?

A dataframe is een lijst met vectoren die even lang zijn. Een matrix bevat slechts één type gegevens, terwijl een dataframe verschillende gegevenstypen accepteert (numeriek, teken, factor, enz.).

Hoe u een dataframe maakt

We kunnen er een dataframe in maken R door de variabele a,b,c,d door te geven aan de data.frame() functie. We kunnen een dataframe maken en de kolommen een naam geven met name() en eenvoudig de naam van de variabelen opgeven.

data.frame(df, stringsAsFactors = TRUE)

argumenten:

  • df: Het kan een matrix zijn die moet worden omgezet als een dataframe of een verzameling variabelen die moet worden samengevoegd
  • stringsAsFactors: Tekenreeks standaard omzetten naar factor

We kunnen een dataframe in R maken voor onze eerste dataset door vier variabelen van dezelfde lengte te combineren.

# 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

Output:

##     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

We kunnen zien dat de kolomkoppen dezelfde naam hebben als de variabelen. We kunnen de kolomnaam in R wijzigen met de functie namen(). Bekijk het R create dataframe-voorbeeld hieronder:

# Name the data frame
names(df) <- c('ID', 'items', 'store', 'price')
df

Output:

##   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)

Output:

## '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

Standaard retourneert dataframe tekenreeksvariabelen als een factor.

Segmentgegevensframe

Het is mogelijk om waarden van een dataframe te SLICE-en. We selecteren de rijen en kolommen die tussen haakjes moeten worden geplaatst, voorafgegaan door de naam van het dataframe.

Een dataframe is samengesteld uit rijen en kolommen, df[A, B]. A vertegenwoordigt de rijen en B de kolommen. We kunnen segmenteren door de rijen en/of kolommen op te geven.

Op afbeelding 1 vertegenwoordigt het linkerdeel de rijen, en het rechterdeel is de kolommen. Merk op dat het symbool: betekent naar. 1:3 is bijvoorbeeld bedoeld om waarden uit 1 te selecteren naar 3.

Segmentgegevensframe

In het onderstaande diagram laten we zien hoe u toegang krijgt tot verschillende selecties van het dataframe:

  • De gele pijl selecteert de rij 1 in kolom 2
  • De groene pijl selecteert de rijen 1 tot 2
  • De rode pijl selecteert de kolom 1
  • De blauwe pijl selecteert de rijen 1 tot 3 en kolommen 3 tot 4

Merk op dat, als we het linkerdeel leeg laten, R zal selecteren alle rijen. Naar analogie: als we het rechterdeel blanco laten, zal R selecteren alle kolommen.

Segmentgegevensframe

We kunnen de code in de console uitvoeren:

## Select row 1 in column 2
df[1,2]

Output:

## [1] book
## Levels: book pen pencil_case textbook
## Select Rows 1 to 2
df[1:2,]

Output:

##   ID items store price
## 1 10  book  TRUE   2.5
## 2 20   pen FALSE   8.0
## Select Columns 1
df[,1]

Output:

## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4
df[1:3, 3:4]

Output:

##   store price
## 1  TRUE   2.5
## 2 FALSE   8.0
## 3  TRUE  10.0

Het is ook mogelijk om de kolommen met hun naam te selecteren. De onderstaande code extraheert bijvoorbeeld twee kolommen: ID en winkel.

# Slice with columns name
df[, c('ID', 'store')]

Output:

##   ID store
## 1 10  TRUE
## 2 20 FALSE
## 3 30  TRUE
## 4 40 FALSE

Voeg een kolom toe aan het gegevensframe

U kunt ook een kolom aan een dataframe toevoegen. U moet het symbool $ gebruiken om dataframe R-variabele toe te voegen en een kolom toe te voegen aan een dataframe in R.

# Create a new vector
quantity <- c(10, 35, 40, 5)

# Add `quantity` to the `df` data frame
df$quantity <- quantity
df

Output:

##   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

Opmerking: het aantal elementen in de vector moet gelijk zijn aan het aantal elementen in het dataframe. Het uitvoeren van de volgende stapwing instructie om kolom toe te voegen aan dataframe R

quantity <- c(10, 35, 40)
# Add `quantity` to the `df` data frame
df$quantity <- quantity

Geeft fout:

Error in `

lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40))
 replacement has 3 rows, data has 4

Selecteer een kolom van een gegevensframe

Soms moeten we een kolom van een dataframe opslaan voor toekomstig gebruik of een bewerking op een kolom uitvoeren. We kunnen het $-teken gebruiken om de kolom uit een dataframe te selecteren.

# Select the column ID
df$ID

Output:

## [1] 1 2 3 4

Subset een gegevensframe

In de vorige sectie hebben we een volledige kolom zonder voorwaarde geselecteerd. Het is mogelijk om subgroep op basis van het feit of een bepaalde voorwaarde al dan niet waar was.

We gebruiken de functie subset().

subset(x, condition)
arguments:
- x: data frame used to perform the subset
- condition: define the conditional statement

We willen alleen de artikelen retourneren met een prijs boven de 10, we kunnen het volgende doen:

# Select price above 5
subset(df, subset = price > 5)

Output:

ID       items store price
2 20         pen FALSE     8
3 30    textbook  TRUE    10
4 40 pencil_case FALSE     7