1. ProgrammeringRHvordan lage en dataramme fra riper i R

Av Andrie de Vries, Joris Meys

Konverteringen fra en matrise til en dataramme i R kan ikke brukes til å konstruere en dataramme med forskjellige typer verdier. Hvis du for eksempel kombinerer både numeriske og tegndata i en matrise, blir alt konvertert til tegn.

Du kan konstruere en dataramme fra grunnen av ved å bruke data.frame () -funksjonen. Når en dataramme er opprettet, kan du legge til observasjoner i en dataramme.

Lag en dataramme fra vektorer i R

Så la oss lage en liten dataramme med navn, lønn og startdato for noen få imaginære medarbeidere. Først lager du tre vektorer som inneholder nødvendig informasjon som denne:

> ansatt <- c ('John Doe', 'Peter Gynn', 'Jolie Hope')
> lønn <- c (21000, 23400, 26800)
> startdato <- as.Date (c ('2010-11-1', '2008-3-25', '2007-3-14'))

Nå har du tre forskjellige vektorer i arbeidsområdet ditt:

  • En karaktervektor kalt ansatt, som inneholder navnene En numerisk vektor kalt lønn, som inneholder de årlige lønningene En datovektor kalt startdato, med datoene for kontraktene startet

Deretter kombinerer du de tre vektorene i en dataramme ved hjelp av følgende kode:

> ansatte.data <- data.frame (ansatt, lønn, startdato)

Resultatet av dette er en dataramme, emplo.data, med følgende struktur:

> str (hire.data)
'data.frame': 3 obs. av 3 variabler:
 $ ansatt: Faktor m / 3 nivåer "John Doe", "Jolie Hope", ..: 1 3 2
 $ lønn: num 21000 23400 26800
 $ startdato: Dato, format: "2010-11-01" "2008-03-25" ...

For å kombinere et antall vektorer i en dataramme, legger du enkelt til alle vektorer som argumenter til data.frame () -funksjonen, atskilt med komma. R vil opprette en dataramme med variablene som heter samme som vektorene som brukes.

Behold tegn som tegn i R

Du har kanskje lagt merke til noe rart når du ser på strukturen til hire.data. Mens vektormedarbeideren er en karaktervektor, gjorde R variabelen ansatt i datarammen til en faktor.

R gjør dette som standard, men du har et ekstra argument til data.frame () -funksjonen som kan unngå dette - nemlig argumentet stringsAsFactors. I eksempelet Employer.data kan du forhindre transformasjon til en faktor av medarbeidersvariabelen ved å bruke følgende kode:

> ansatte.data <- data.frame (ansatt, lønn, startdato, strengerAsFactors = FALSE)

Hvis du ser på strukturen til datarammen nå, ser du at den variable medarbeideren er en tegnvektor, som vist i følgende utdata:

> str (hire.data)
'data.frame': 3 obs. av 3 variabler:
 $ ansatt: chr "John Doe" "Peter Gynn" "Jolie Hope"
 $ lønn: num 21000 23400 26800
 $ startdato: Dato, format: "2010-11-01" "2008-03-25" ...

Som standard transformerer R alltid karaktervektorer til faktorer når du oppretter en dataramme med tegnvektorer eller konverterer en karaktermatrise til en dataramme. Dette kan være en stygg årsak til feil i koden din hvis du ikke er klar over den. Hvis du gjør det til en vane å alltid spesifisere strengerAsFactors-argumentet, kan du unngå mye frustrasjon.