R Language
Datumklassen
Sök…
Anmärkningar
Relaterade ämnen
Förvirrade anteckningar
-
Date
: Lagrar tid som antal dagar sedan UNIX-epoken1970-01-01
. med negativa värden för tidigare datum. - Det representeras som ett heltal (det verkställs dock inte i den interna representationen)
- De skrivs alltid ut enligt reglerna i den nuvarande gregorianska kalendern, även om kalendern inte användes för länge sedan.
- Det följer inte tidszoner, så det bör inte användas för att avkorta tiden för
POSIXct
ellerPOSIXlt
objekt. -
sys.Date()
returnerar ett objekt frånDate
Fler anteckningar
- lubridats
ymd
,mdy
, etc. är alternativ tillas.Date
som också pares till Date-klassen; se Personeringsdatum och datatider från strängar med lubridat . - data.tables experimentella IDate-klass härstammar från och är mest utbytbar med Date, men lagras som heltal istället för dubbel.
Formatera datum
För att formatera Dates
använder vi format(date, format="%Y-%m-%d")
-funktionen med antingen POSIXct
(ges från as.POSIXct()
) eller POSIXlt
(ges från as.POSIXlt()
)
d = as.Date("2016-07-21") # Current Date Time Stamp format(d,"%a") # Abbreviated Weekday ## [1] "Thu" format(d,"%A") # Full Weekday ## [1] "Thursday" format(d,"%b") # Abbreviated Month ## [1] "Jul" format(d,"%B") # Full Month ## [1] "July" format(d,"%m") # 00-12 Month Format ## [1] "07" format(d,"%d") # 00-31 Day Format ## [1] "21" format(d,"%e") # 0-31 Day Format ## [1] "21" format(d,"%y") # 00-99 Year ## [1] "16" format(d,"%Y") # Year with Century ## [1] "2016"
För mer, se ?strptime
.
datum
För att tvinga en variabel till ett datum använder as.Date()
funktionen as.Date()
.
> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"
as.Date()
låter dig ange ett formatargument. Standardvärdet är %Y-%m-%d
, vilket är År-månad-dag.
> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"
Formateringssträngen kan placeras antingen i ett par enkla citat eller dubbla citat. Datum uttrycks vanligtvis i en mängd olika former såsom: "dm-yy"
eller "dm-YYYY"
eller "md-yy"
eller "md-YYYY"
eller "YYYY-md"
eller "YYYY-dm"
. Dessa format kan också uttryckas genom att ersätta "-"
med "/"
. Dessutom uttrycks datum också i formerna, säg "6 november 1986" eller "6 november 1986" eller "6 november 1986" eller "6 november 1986" och så vidare. Funktionen as.Date () accepterar alla sådana teckensträngar och när vi nämner strängt format, matar den alltid ut datumet i formen "YYYY-md"
.
Anta att vi har en "9-6-1962"
i formatet "%d-%m-%Y"
.
#
# It tries to interprets the string as YYYY-m-d
#
> as.Date("9-6-1962")
[1] "0009-06-19" #interprets as "%Y-%m-%d"
>
as.Date("9/6/1962")
[1] "0009-06-19" #again interprets as "%Y-%m-%d"
>
# It has no problem in understanding, if the date is in form YYYY-m-d or YYYY/m/d
#
> as.Date("1962-6-9")
[1] "1962-06-09" # no problem
> as.Date("1962/6/9")
[1] "1962-06-09" # no problem
>
Genom att ange rätt format för inmatningssträngen kan vi få önskade resultat. Vi använder följande koder för att specificera format till as.Date () -funktionen.
Formatera kod | Menande |
---|---|
%d | dag |
%m | månad |
%y | år med två siffror |
%Y | år med fyra siffror |
%b | förkortad månad i 3 tecken |
%B | månadens fulla namn |
Betrakta följande exempel ange parametern format:
> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>
Parameternamnet format kan uteslutas.
> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>
Vissa gånger används namnen på månaderna förkortade till de tre första tecknen vid skrivningen av datumen. I vilket fall använder vi formatformat %b
.
> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>
Observera att det inte finns antingen '-'
eller '/'
eller vita mellanrum mellan medlemmarna i datumsträngen. Formatsträngen ska exakt matcha den inmatade strängen. Tänk på följande exempel:
> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>
Observera att det finns ett komma i datumsträngen och därmed ett komma i formatspecifikationen också. Om komma utelämnas i formatsträngen, resulterar det i en NA
. Exempel på användning av %B
format är som följer:
> as.Date("October 12, 2016", "%B %d, %Y")
[1] "2016-10-12"
>
> as.Date("12 October, 2016", "%d %B, %Y")
[1] "2016-10-12"
>
%y
formatet är systemspecifikt och bör därför användas med försiktighet. Andra parametrar som används med denna funktion är ursprung och tz (tidszon).
Analysera strängar i datumobjekt
R innehåller en datumklass, som skapas med as.Date()
, som tar en sträng eller vektor av strängar, och om datumet inte är i ISO 8601-datumformat YYYY-MM-DD
, en formateringssträng av strptime
stil-tokens .
as.Date('2016-08-01') # in ISO format, so does not require formatting string
## [1] "2016-08-01"
as.Date('05/23/16', format = '%m/%d/%y')
## [1] "2016-05-23"
as.Date('March 23rd, 2016', '%B %drd, %Y') # add separators and literals to format
## [1] "2016-03-23"
as.Date(' 2016-08-01 foo') # leading whitespace and all trailing characters are ignored
## [1] "2016-08-01"
as.Date(c('2016-01-01', '2016-01-02'))
# [1] "2016-01-01" "2016-01-02"