Slik formaterer og utføre operasjoner på datoer og klokkeslett i R

January 3  by Eliza

Hvis du vil formatere en dato for pen utskrift i R, bruker du formatet (), som tar en POSIXct eller POSIXlt datetime som input, sammen med en formatering streng.

Bruke eksempel hvor objektet XCT er dagen og klokkeslettet for Apollo landing, kan du formatere denne dato og klokkeslett på mange forskjellige måter. For eksempler, for å formatere den som DD / MM / ÅÅ, prøv:

> Format (XCT, "% d /% m /% y")
[1] "20/07/69"

I tillegg til formateringskoder, kan du bruke en hvilken som helst annen karakter. Hvis du ønsker å formatere XCT datetime som en setning, kan du prøve følgende:

> Format (XCT, "% s minutter over% I% p, om% d% B% Y")
[1] "39 minutter over 20:00, på 20 juli 1969"

Fordi R butikker datetime gjenstander som tall, kan du gjøre ulike operasjoner på dato.

Addisjon og subtraksjon i R

Fordi R lagrer objekter av klassen POSIXct som antall sekunder siden epoken (vanligvis i begynnelsen av 1970), kan du gjøre addisjon og subtraksjon ved å legge til eller trekke sekunder. Ita € ™ s mer vanlig å legge til eller trekke dager fra dato, så ita € ™ s nyttig å vite at hver dag har 86 400 sekunder.

> 24 * 60 * 60
[1] 86400

Så, for å legge til syv dager til Apollo månelanding dato, bruke tillegg, bare husk å multiplisere antall dager med antall sekunder per dag:

> XCT + 7 * 86 400
[1] "1969-07-27 20:17:39 UTC"

Når du vet at du kan konvertere en varighet til sekunder, kan du legge til eller trekke noen verdi til en datetime objekt. For eksempel legge tre timer til den tiden av Apollo månelanding:

> XCT + 3 * 60 * 60
[1] "1969-07-20 23:17:39 UTC"

Tilsvarende, for å få en date syv dager tidligere, bruker subtraksjon:

> XCT - 7 * 86400
[1] "1969-07-13 20:17:39 UTC"

Sammenligning av datoer i R

På samme måte som du kan legge til eller trekke fra statene du kan også sammenligne datoer med sammenligningsoperatorer, for eksempel mindre enn (<) eller større enn (>).

Si at du ønsker å sammenligne gjeldende tid med noen fast tid. I R, bruker du Sys.time () -funksjonen for å få dagens system tid:

> Sys.time ()
[1] "2012-03-24 10:12:52 GMT"

Nå vet du det nøyaktige tidspunktet da vi skrev denne setningen. Tydelig når du prøver den samme kommandoen vil du få et annet resultat!

Nå kan du sammenligne din nåværende systemet tid med den tiden av Apollo landing:

> Sys.time () <XCT
[1] FALSK

Hvis systemklokken er nøyaktig, så åpenbart at du forventer at resultatet skal være falsk, fordi månelandingen skjedde mer enn 40 år siden.

Sammenlignings operatører er vektorisert, slik at du kan sammenligne en hel vektor av datoer med månelanddagen. Prøv å bruke all din kunnskap om datoer, sekvenser av datoer og sammenligning operatører å sammenligne starten på flere tiår til månelanddagen.

Start med å lage en POSIXct objekt som inneholder den første dagen av 1950. Deretter bruker seq () for å lage en sekvens med intervaller på ti år:

> Dec.start <- as.POSIXct ("1950-01-01")
> Desember <- seq (dec.start, etter = "10 år", length.out = 4)
> Desember
[1] "1950-01-01 GMT" "1960-01-01 GMT" "1970-01-01 GMT"
[4] "1980-01-01 GMT"

Til slutt kan du sammenligne den nye vektoren felles med måneland dato:

> Desember> XCT
[1] false false TRUE TRUE

Som du kan se, de to første resultater (sammenligne med 1950 og 1960) er falske, og de to siste verdiene (sammenlikne 1970 og 1980) er TRUE.