R Data Frame: Hur man skapar, lägger till, väljer och delar
Vad är en dataram?
A dataram är en lista över vektorer som är lika långa. En matris innehåller bara en typ av data, medan en dataram accepterar olika datatyper (numeriska, tecken, faktor, etc.).
Hur man skapar en dataram
Vi kan skapa en dataram i R genom att skicka variabeln a,b,c,d till data.frame()-funktionen. Vi kan skapa en dataram och namnge kolumnerna med name() och helt enkelt ange namnet på variablerna.
data.frame(df, stringsAsFactors = TRUE)
Argument:
- df: Det kan vara en matris att konvertera som en dataram eller en samling variabler som ska sammanfogas
- stringsAsFactors: Konvertera sträng till faktor som standard
Vi kan skapa en dataram i R för vår första datamängd genom att kombinera fyra variabler av samma längd.
# 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
Produktion:
## 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
Vi kan se kolumnrubrikerna har samma namn som variablerna. Vi kan ändra kolumnnamn i R med funktionen names(). Kontrollera R create dataframe-exemplet nedan:
# Name the data frame names(df) <- c('ID', 'items', 'store', 'price') df
Produktion:
## 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)
Produktion:
## '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
Som standard returnerar dataramen strängvariabler som en faktor.
Slice Data Frame
Det är möjligt att SLICE värdena för en dataram. Vi väljer de rader och kolumner som ska återgå till parentes före namnet på dataramen.
En dataram är sammansatt av rader och kolumner, df[A, B]. A representerar raderna och B kolumnerna. Vi kan skära antingen genom att ange rader och/eller kolumner.
Från bild 1 representerar den vänstra delen rader, och den högra delen är kolonner. Observera att symbolen : betyder till. Till exempel, 1:3 avser att välja värden från 1 till 3.
I diagrammet nedan visar vi hur man kommer åt olika urval av dataramen:
- Den gula pilen väljer v 1 i kolumn 2
- Den gröna pilen väljer rader 1 till 2
- Den röda pilen väljer kolumn 1
- Den blå pilen väljer rader 1 till 3 och kolonner 3 till 4
Observera att om vi låter den vänstra delen vara tom kommer R att välja alla rader. I analogi, om vi låter den högra delen vara tom, kommer R att välja alla kolumner.
Vi kan köra koden i konsolen:
## Select row 1 in column 2 df[1,2]
Produktion:
## [1] book ## Levels: book pen pencil_case textbook
## Select Rows 1 to 2 df[1:2,]
Produktion:
## ID items store price ## 1 10 book TRUE 2.5 ## 2 20 pen FALSE 8.0
## Select Columns 1 df[,1]
Produktion:
## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4 df[1:3, 3:4]
Produktion:
## store price ## 1 TRUE 2.5 ## 2 FALSE 8.0 ## 3 TRUE 10.0
Det är också möjligt att välja kolumnerna med deras namn. Till exempel extraherar koden nedan två kolumner: ID och butik.
# Slice with columns name df[, c('ID', 'store')]
Produktion:
## ID store ## 1 10 TRUE ## 2 20 FALSE ## 3 30 TRUE ## 4 40 FALSE
Lägg till en kolumn till dataram
Du kan också lägga till en kolumn till en dataram. Du måste använda symbolen $ för att lägga till dataram R-variabel och lägga till en kolumn till en dataram i R.
# Create a new vector quantity <- c(10, 35, 40, 5) # Add `quantity` to the `df` data frame df$quantity <- quantity df
Produktion:
## 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
Notera: Antalet element i vektorn måste vara lika med antalet element i dataramen. Kör följande sats för att lägga till kolumn till dataram R
quantity <- c(10, 35, 40) # Add `quantity` to the `df` data frame df$quantity <- quantity
Ger fel:
Error in ` lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40)) replacement has 3 rows, data has 4
Välj en kolumn i en dataram
Ibland behöver vi lagra en kolumn i en dataram för framtida användning eller utföra operation på en kolumn. Vi kan använda $-tecknet för att välja kolumnen från en dataram.
# Select the column ID df$ID
Produktion:
## [1] 1 2 3 4
Delinställ en dataram
I föregående avsnitt valde vi en hel kolumn utan villkor. Är det möjligt att delmängd baserat på om ett visst villkor var sant eller inte.
Vi använder subset()-funktionen.
subset(x, condition) arguments: - x: data frame used to perform the subset - condition: define the conditional statement
Vi vill endast returnera varor med pris över 10, vi kan göra:
# Select price above 5 subset(df, subset = price > 5)
Produktion:
ID items store price 2 20 pen FALSE 8 3 30 textbook TRUE 10 4 40 pencil_case FALSE 7