R Language
Klasa Data
Szukaj…
Uwagi
powiązane tematy
Pomieszane notatki
-
Date
: Przechowuje czas jako liczbę dni od epoki UNIX1970-01-01
. z wartościami ujemnymi dla wcześniejszych dat. - Jest reprezentowany jako liczba całkowita (jednak nie jest wymuszony w wewnętrznej reprezentacji)
- Są zawsze drukowane zgodnie z zasadami obecnego kalendarza gregoriańskiego, mimo że kalendarz nie był używany dawno temu.
- Nie śledzi stref czasowych, dlatego nie należy go używać do skracania czasu w
POSIXct
lubPOSIXlt
. -
sys.Date()
zwraca obiekt klasyDate
Więcej notatek
- lubridate „s
ymd
,mdy
, itd. są alternatywy dlaas.Date
że również zanalizować to Date klasie; zobacz Parsowanie dat i dat danych z ciągów z lubridate . - data.table jest eksperymentalnym klasy Idate jest pochodną i jest najczęściej stosowane zamiennie z datą, ale jest przechowywana jako liczba całkowita, zamiast podwójnie.
Formatowanie dat
Aby sformatować Dates
, używamy funkcji format(date, format="%Y-%m-%d")
z POSIXct
(podany jako as.POSIXct()
) lub POSIXlt
(podany jako 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"
Aby uzyskać więcej informacji, zobacz ?strptime
.
Daktyle
Aby zmusić zmienną do daty, użyj funkcji as.Date()
.
> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"
Funkcja as.Date()
pozwala podać argument formatu. Wartość domyślna to %Y-%m-%d
, czyli rok-miesiąc-dzień.
> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"
Ciąg formatu może być umieszczony w parze pojedynczych lub podwójnych cudzysłowów. Daty są zwykle wyrażane w różnych formach, takich jak: "dm-yy"
lub "dm-YYYY"
lub "md-yy"
lub "md-YYYY"
lub "YYYY-md"
lub "YYYY-dm"
. Formaty te można również wyrazić, zastępując "-"
przez "/"
. Ponadto daty wyrażane są również w postaciach, np. „6 listopada 1986 r.” Lub „6 listopada 1986 r.” Lub „6 listopada 1986 r.” Lub „6 listopada 1986 r.” I tak dalej. Funkcja as.Date () akceptuje wszystkie takie ciągi znaków, a kiedy wspomnimy o odpowiednim formacie ciągu, zawsze wyświetla datę w postaci "YYYY-md"
.
Załóżmy, że mamy ciąg daty "9-6-1962"
w formacie "%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
>
Określając poprawny format ciągu wejściowego, możemy uzyskać pożądane wyniki. Używamy następujących kodów do określania formatów funkcji as.Date () .
Formatuj kod | Znaczenie |
---|---|
%d | dzień |
%m | miesiąc |
%y | rok w postaci dwucyfrowej |
%Y | rok w postaci 4 cyfr |
%b | w skrócie miesiąc w 3 znakach |
%B | pełna nazwa miesiąca |
Rozważ następujący przykład określający parametr formatu :
> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>
Format nazwy parametru można pominąć.
> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>
Czasami przy pisaniu dat używane są nazwy miesięcy w skrócie do pierwszych trzech znaków. W takim przypadku używamy specyfikatora formatu %b
.
> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>
Zauważ, że nie ma ani '-'
ani '/'
ani białych znaków między elementami w ciągu daty. Ciąg formatu powinien dokładnie pasować do tego ciągu wejściowego. Rozważ następujący przykład:
> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>
Zauważ, że w ciągu daty występuje przecinek, a zatem przecinek również w specyfikacji formatu. Jeśli przecinek formatu zostanie pominięty w ciągu formatu, spowoduje to NA
. Przykład użycia specyfikatora formatu %B
jest następujący:
> as.Date("October 12, 2016", "%B %d, %Y")
[1] "2016-10-12"
>
> as.Date("12 October, 2016", "%d %B, %Y")
[1] "2016-10-12"
>
Format %y
jest specyficzny dla systemu i dlatego należy zachować ostrożność. Inne parametry używane w tej funkcji to początek i tz (strefa czasowa).
Parsowanie ciągów do obiektów daty
R zawiera klasę Date, która jest tworzona za pomocą as.Date()
, która pobiera ciąg lub wektor ciągów, a jeśli data nie jest w formacie daty ISO 8601 YYYY-MM-DD
, ciąg strptime
tokenów w stylu strptime
.
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"