Gawe sareng kaping dina R (kamampuhan dasar, kitu ogé lubridate na timeperiodsR bungkusan)

Kéngingkeun tanggal ayeuna dina basa pamrograman naon waé, operasi anu sami sareng "Halo dunya!" Basa Sunda teu iwal.

Dina artikel ieu, urang bakal kasampak di kumaha gawé bareng kaping dina sintaksis dasar basa Sunda, sarta ogé kasampak di sababaraha bungkusan mangpaat nu ngalegaan kamampuhan na nalika gawé bareng kaping:

  • lubridate - pakét anu ngamungkinkeun anjeun ngalaksanakeun itungan aritmetika antara tanggal;
  • timeperiodsR - pakét pikeun dianggo sareng interval waktos sareng komponénna.

Gawe sareng kaping dina R (kamampuhan dasar, kitu ogé lubridate na timeperiodsR bungkusan)

eusi

Bilih aya nu resep kana analisis data, khususna basa sunda, tiasa wae kabetot mah telegram и youtube saluran. Seuseueurna eusina dikhususkeun kanggo basa Sunda.

  1. Gawe sareng kaping dina sintaksis basa Sunda
    1.1. Ngarobih téks ka tanggal
    1.2. Ékstrak komponén tanggal dina dasar R
  2. Gawe sareng kaping ngagunakeun pakét lubridate
    2.1. Ngarobih téks ka tanggal nganggo lubridate
    2.2. Extracting komponén tanggal ngagunakeun pakét lubridate
    2.3. Operasi aritmatika sareng kaping
  3. Karya saderhana sareng période, pakét timeperiodsR
    3.1. Interval waktu dina période waktuR
    3.2. Nyaring véktor tanggal nganggo timeperiodsR
  4. kacindekan

Gawe sareng kaping dina sintaksis basa Sunda

Ngarobih téks ka tanggal

Dasar Sunda mibanda sakumpulan fungsi pikeun gawé bareng kaping. Karugian tina sintaksis dasar nyaéta kasus nami fungsi sareng argumen anu sumebar pisan sareng praktis henteu aya hubungan logis. Nanging, anjeun kedah terang fungsi dasar basa, janten urang mimitian ku aranjeunna.

Seringna nalika ngamuat data kana basa Sunda, tina file csv, atanapi sumber anu sanés, anjeun nampi tanggal salaku téks. Pikeun ngarobih téks ieu kana jinis data anu leres, paké fungsina as.Date().

# создаём текстовый вектор с датами
my_dates <- c("2019-09-01", "2019-09-10", "2019-09-23")

# проверяем тип данных
class(my_dates)

#> [1] "character"

# преобразуем текст в дату
my_dates <- as.Date(my_dates)

# проверяем тип данных
class(my_dates)

#> [1] "Date"

sacara standar as.Date() nampi tanggal dina dua format: YYYY-MM-DD atawa YYYY/MM/DD.
Upami set data anjeun ngandung tanggal dina sababaraha format anu sanés, anjeun tiasa nganggo argumen format.

as.Date("September 26, 2019", format = "%B %d, %Y")

wujud jeung ukuran nampi operator dina bentuk string anu nunjukkeun interval waktos sareng formatna; nilai anu paling sering dianggo dipidangkeun dina tabel di handap ieu:

Format
gambaran

%d
Jumlah poé dina bulan

%a
Singketan pikeun ngaran poé dina saminggu

%A
Ngaran lengkep poé dina saminggu

%w
Jumlah poé dina saminggu (0-6, dimana 0 nyaéta Minggu)

%m
Sebutan bulan dua digit (01-12)

%b
Singketan tina ngaran bulan (apr, mar,…)

%B
Nami bulan lengkep

%y
Sebutan taun dua digit

%Y
Opat-angka taun designation

%j
Jumlah poé dina taun (001 - 366)

%U
Jumlah minggu dina taun (00 - 53), mimiti minggu Minggu

%W
Jumlah minggu dina taun (00 - 53), mimiti minggu Senén

Sasuai, "26 Séptémber 2019" mangrupikeun nami lengkep bulan, tanggal sareng taun. Format tanggal ieu tiasa dijelaskeun nganggo operator sapertos kieu:"%B %d, %Y".

dimana:

  • %B - Ngaran lengkep bulan
  • %d - Jumlah poé dina bulan
  • %Y - Opat-angka taun designation

Nalika ngajéntrékeun format tanggal, hal anu penting pikeun ngawengku sakabéh karakter tambahan ti string Anjeun, kayaning dashes, koma, titik, spasi, jeung saterusna. Dina conto kuring, "26 Séptémber 2019", aya koma saatos tanggalna, sareng anjeun ogé kedah nempatkeun koma dina pedaran format:"%B %d, %Y".

Aya kaayaan nalika anjeun nampi tanggal anu henteu ngan ukur cocog sareng format standar (YYYY-MM-DD atawa YYYY/MM/DD), tapi ogé dina basa anu béda ti standar anu dipasang dina sistem operasi anjeun. Salaku conto, anjeun ngaunduh data dimana tanggalna dituduhkeun sapertos kieu: "15 Désémber 2019." Sateuacan ngarobah senar ieu ka tanggal, anjeun kedah ngarobih lokal.

# Меняем локаль
Sys.setlocale("LC_TIME", "Russian")
# Конвертируем строку в дату
as.Date("Декабрь 15, 2019 г.", format = "%B %d, %Y")

Ékstrak komponén tanggal dina dasar R

Aya teu loba fungsi dina basa Sunda dasar nu ngidinan Anjeun pikeun nimba sagala bagian tina titimangsa tina objék kelas tanggal.

current_date <- Sys.Date() # текущая дата
weekdays(current_date)     # получить номер дня недели
months(current_date)       # получить номер месяца в году
quarters(current_date)     # получить номер квартала в году

Salian kelas objék utama tanggal dina basa Sunda dasar aya 2 deui tipe data nu nyimpen timestamp: POSIXlt, POSIXct. Beda utama antara kelas ieu sareng tanggal nyaeta salian ti tanggal aranjeunna nyimpen waktos.

# получить текущую дату и время
current_time <- Sys.time()

# узнать класс объекта current_time 
class(current_time)

# "POSIXct" "POSIXt"

fungsi Sys.time() mulih tanggal ayeuna jeung waktu dina format nu POSIXct. format ieu sarua hartina jeung UNIXTIME, sarta nyimpen jumlah detik ti mimiti era UNIX (tengah wengi (UTC) ti 31 Désémber 1969 nepi ka 1 Januari 1970).

kelas POSIXlt éta ogé nyimpen waktos sareng kaping, sareng sadaya komponénna. Ku alatan éta, éta hiji obyék kalawan struktur leuwih kompleks, tapi ti mana éta gampang pikeun ménta naon tanggal jeung waktu komponén sabab kanyataanna POSIXlt eta daptar.

# Получаем текущую дату и время
current_time_ct <- Sys.time()

# Преобразуем в формат POSIXlt
current_time_lt <- as.POSIXlt(current_time_ct)

# извлекаем компоненты даты и времени
current_time_lt$sec   # секунды
current_time_lt$min   # минуты
current_time_lt$hour  # часы
current_time_lt$mday  # день месяца
current_time_lt$mon   # месяц
current_time_lt$year  # год
current_time_lt$wday  # день недели
current_time_lt$yday  # день года
current_time_lt$zone  # часовой пояс

Ngarobih data numerik sareng téks kana format POSIX* dilaksanakeun ku fungsi as.POSIXct() и as.POSIXlt(). Fungsi ieu ngagaduhan sakumpulan dalil.

  • x - Jumlah, string atawa objék kelas tanggal, nu kudu dirobah;
  • tz - Zona waktos, standar "GMT";
  • format - Katerangan ngeunaan format tanggal dimana data anu dikirimkeun kana argumen x digambarkeun;
  • Asal - Dipaké ngan nalika ngarobah hiji angka kana POSIX; Anjeun kudu lulus hiji objek tanggal jeung waktu ti mana detik diitung kana argumen ieu. Biasana dianggo pikeun tarjamahan tina UNIXTIME.

Upami inpormasi tanggal sareng waktos anjeun aya dina UNIXTIME, teras pikeun ngarobih kana tanggal anu jelas sareng tiasa dibaca, paké conto ieu:

# Конвертируем UNIXTIME в читаемую дату 
as.POSIXlt(1570084639,  origin = "1970-01-01")

Dina asal anjeun bisa nangtukeun timestamp wae. Contona, upami data anjeun ngandung tanggal sareng waktos salaku jumlah detik ti 15 Séptémber 2019 12:15 pm, teras ngarobih kana panggunaan tanggal:

# Конвертируем UNIXTIME в дату учитывая что начало отсчёта 15 сентября 2019 12:15
as.POSIXlt(1546123,  origin = "2019-09-15 12:15:00")

Gawe sareng kaping ngagunakeun pakét lubridate

lubridate Panginten pakét anu paling populér pikeun damel sareng kaping dina basa Sunda. Éta nyayogikeun anjeun tilu kelas tambahan.

  • durasi - durasi, i.e. jumlah detik antara dua cap waktu;
  • période - période ngamungkinkeun anjeun pikeun ngitung antara tanggal dina interval anu tiasa dibaca manusa: dinten, bulan, minggu, sareng saterasna;
  • interval - objék nu nyadiakeun titik awal jeung tungtung waktu.

Pamasangan bungkusan tambahan dina basa Sunda dilaksanakeun nganggo pungsi standar install.packages().

Masang pakét lubridate:

install.packages("lubridate")

Ngarobih téks ka tanggal nganggo lubridate

Fitur pakét lubridate sacara signifikan nyederhanakeun prosés ngarobih téks kana tanggal, sareng ogé ngamungkinkeun anjeun ngalaksanakeun operasi aritmetika sareng kaping sareng waktos.

Fungsina bakal ngabantosan anjeun kéngingkeun tanggal atanapi tanggal sareng waktos ayeuna today() и now().

today() # текущая дата
now()   # текущая дата и время

Pikeun ngarobah string ka tanggal dina lubridate Aya sakabeh kulawarga fungsi anu ngaranna salawasna diwangun ku tilu hurup, sarta nuduhkeun runtuyan komponén titimangsa:

  • y - taun
  • m - bulan
  • d - poé

Daptar fungsi pikeun ngarobah téks ka tanggal via lubridate

  • ymd()
  • ydm()
  • mdy()
  • myd()
  • dmy()
  • dym()
  • yq()

Sababaraha conto pikeun ngarobah string kana kaping:

ymd("2017 jan 21")
mdy("March 20th, 2019")
dmy("1st april of 2018")

Sakumaha anjeun tiasa tingali lubridate Éta langkung éfisién pikeun ngenalkeun déskripsi tanggal salaku téks, sareng ngamungkinkeun anjeun ngarobih téks ka tanggal tanpa nganggo operator tambahan pikeun ngajelaskeun formatna.

Extracting komponén tanggal ngagunakeun pakét lubridate

Ogé ngagunakeun lubridate anjeun tiasa kéngingkeun komponén naon waé ti tanggal hiji:

dt <- ymd("2017 jan 21")

year(dt)  # год
month(dt) # месяц
mday(dt)  # день в месяце
yday(dt)  # день в году
wday(dt)  # день недели

Operasi aritmatika sareng kaping

Tapi fungsi pangpentingna sarta dasar lubridate nyaéta kamampuan pikeun ngalakukeun rupa-rupa operasi aritmatika sareng kaping.

Pembulatan tanggal dilaksanakeun ku tilu fungsi:

  • floor_date - rounding ka kaliwat tense pangcaketna
  • ceiling_date - rounding ka mangsa nu bakal datang tense
  • round_date - rounding ka waktu pangcaketna

Unggal fungsi ieu boga argumen kamanunggalannu ngidinan Anjeun pikeun nangtukeun unit rounding: detik, menit, jam, poé, minggu, bulan, bimonth, saparapat, usum, satengah taun, taun

dt <- ymd("2017 jan 21")

round_date(dt, unit = "month")    # округлить до месяца
round_date(dt, unit = "3 month")  # округлить до 3 месяцев
round_date(dt, unit = "quarter")  # округлить до квартала
round_date(dt, unit = "season")   # округлить до сезона
round_date(dt, unit = "halfyear") # округлить до полугодия

Janten hayu urang terangkeun kumaha carana kéngingkeun tanggal 8 dinten saatos tanggal ayeuna sareng ngalakukeun sababaraha itungan aritmetika sanés antara dua tanggal éta.

today() + days(8)   # какая дата будет через 8 дней
today() - months(2) # какая дата была 2 месяца назад
today() + weeks(12) # какая дата будет через 12 недель
today() - years(2)  # какая дата была 2 года назад

Karya saderhana sareng période, pakét timeperiodsR.

timeperiodsR - pakét seger pikeun damel sareng kaping anu diterbitkeun dina CRAN dina Séptémber 2019.

Masang pakét timeperiodsR:

install.packages("timeperiodsR")

Tujuan utama pikeun gancang nangtukeun interval waktu nu tangtu relatif ka tanggal dibikeun. Salaku conto, ngagunakeun fungsina anjeun tiasa kalayan gampang:

  • Kéngingkeun minggu, bulan, saparapat atanapi taun kapengker dina basa Sunda.
  • Kéngingkeun sajumlah interval waktos anu ditangtukeun pikeun tanggal, contona 4 minggu katukang.
  • Gampang nimba komponénna tina interval waktu anu dihasilkeun: tanggal mimiti sareng tungtung, jumlah dinten anu kalebet dina interval, sadaya réntétan tanggal anu kalebet dina éta.

Ngaran sadaya fungsi pakét timeperiodsR intuitif sareng diwangun ku dua bagian: tuju_intervaldimana:

  • tuju di mana anjeun kudu mindahkeun relatif ka tanggal dibikeun: last_n, saméméhna, ieu, salajengna, next_n.
  • temporal interval keur ngitung période: poé, minggu, bulan, saparapat, taun.

set pinuh fungsi:

  • last_n_days()
  • last_n_weeks()
  • last_n_months()
  • last_n_quarters()
  • last_n_years()
  • previous_week()
  • previous_month()
  • previous_quarter()
  • previous_year()
  • this_week()
  • this_month()
  • this_quarter()
  • this_year()
  • next_week()
  • next_month()
  • next_quarter()
  • next_year()
  • next_n_days()
  • next_n_weeks()
  • next_n_months()
  • next_n_quarters()
  • next_n_years()
  • custom_period()

Interval waktu dina période waktuR

Pungsi ieu mangpaat dina kasus dimana anjeun kudu ngawangun laporan dumasar kana data ti minggu kaliwat atawa bulan. Pikeun meunangkeun bulan panungtungan, make fungsi tina ngaran nu sami previous_month():

prmonth <- previous_month()

Sanggeus éta anjeun bakal boga obyék sabulan класса tpr, ti mana komponén-komponén di handap ieu gampang diala:

  • tanggal mimiti periode, dina conto urang ieu bulan panungtungan
  • tanggal tungtung période
  • jumlah poé kaasup dina periode
  • runtuyan tanggal kaasup dina periode

Salaku tambahan, anjeun tiasa nampi masing-masing komponén ku cara anu béda:

# первый день периода
prmonth$start
start(prmonth)

# последний день периода
prmonth$end
end(prmonth)

# последовательность дат
prmonth$sequence
seq(prmonth)

# количество дней входящих в период
prmonth$length
length(prmonth)

Anjeun oge bisa meunangkeun salah sahiji komponén ngagunakeun argumen bagean, anu aya dina unggal fungsi pakét. Nilai anu mungkin: mimiti, tungtung, sekuen, panjang.

previous_month(part = "start")    # начало периода
previous_month(part = "end")      # конец периода
previous_month(part = "sequence") # последовательность дат
previous_month(part = "length")   # количество дней в периоде

Janten hayu urang tingali sadaya argumen anu aya dina fungsi pakét timeperiodsR:

  • x - Tanggal rujukan ti mana periode waktu bakal diitung, tanggal ayeuna sacara standar;
  • n - Jumlah interval nu bakal kaasup dina periode, contona 3 minggu saméméhna;
  • part - Mana komponén objék tpr Anjeun kudu meunang, sacara standar all;
  • week_start - Argumen ngan ukur aya dina fungsi pikeun damel sareng minggu, sareng ngamungkinkeun anjeun nyetél jumlah dinten dina saminggu anu bakal dianggap awalna. Sacara standar, mimiti minggu nyaéta Senén, tapi anjeun tiasa nyetél naon waé ti 1 - Senén nepi ka 7 - Minggu.

Ku kituna, anjeun bisa ngitung sagala periode waktu relatif ka ayeuna atawa naon baé tanggal dibikeun; ieu sababaraha conto deui:

# получить 3 прошлые недели
# от 6 октября 2019 года
# начало недели - понедельник
last_n_weeks(x = "2019-10-06", 
             n = 3, 
             week_start = 1)

 Time period: from  9 September of 2019, Monday to 29 September of 2019, Sunday

6 Oktober nyaéta Minggu:
Gawe sareng kaping dina R (kamampuhan dasar, kitu ogé lubridate na timeperiodsR bungkusan)

Urang peryogi periode anu, relatif ka 6 Oktober, bakal nyandak 3 minggu saméméhna. Teu kaasup minggu nu ngawengku 6 Oktober sorangan. Sasuai, ieu mangrupikeun periode ti 9 Séptémber dugi ka 29 Séptémber.

Gawe sareng kaping dina R (kamampuhan dasar, kitu ogé lubridate na timeperiodsR bungkusan)

# получить месяц отстающий на 4 месяца
# от 16 сентября 2019 года
previous_month(x = "2019-09-16", n = 4)

 Time period: from  1 May of 2019, Wednesday to 31 May of 2019, Friday

Dina conto ieu, urang kabetot dina bulan anu 4 sasih kapengker, upami urang mimitian ti 16 Séptémber 2019, maka éta Méi 2019.

Nyaring véktor tanggal nganggo timeperiodsR

Pikeun nyaring tanggal dina timeperiodsR Aya sababaraha operator:

  • % left_out% - compares dua objék kelas tpr, sarta mulih nilai ti kénca nu leungit di katuhu.
  • % left_in% - compares dua objék tina kelas tpr, sarta mulih kaping ti obyék kénca nu kaasup dina katuhu.
  • % right_out% - ngabandingkeun dua objék kelas tpr, sarta mulih nilai ti katuhu nu leungit ti kénca.
  • % right_in% - compares dua objék tina kelas tpr, sarta balik kaping ti obyék katuhu anu hadir dina hiji kénca.

period1 <- this_month("2019-11-07")
period2 <- previous_week("2019-11-07")

period1 %left_in% period2   # получить даты из period1 которые входят в period2
period1 %left_out% period2  # получить даты из period1 которые не входят в period2
period1 %right_in% period2  # получить даты из period2 которые входят в period1
period1 %right_out% period2 # получить даты из period2 которые не входят в period1

Dina bungkusan timeperiodsR aya hiji resmi, basa Rusia Daptar puter YouTube.

kacindekan

Urang nalungtik di jéntré kelas objék nu dirancang dina basa Sunda pikeun gawé bareng kaping. Ogé ayeuna anjeun tiasa ngalakukeun operasi aritmetika dina kaping, sareng gancang kéngingkeun période waktos nganggo pakét timeperiodsR.

Upami anjeun resep kana basa Sunda, kuring ngajak anjeun ngalanggan saluran telegram kuring R4 pamasaran, anu ku simkuring didugikeun saban-saban bahan mangpaat sapopoe ngeunaan ngagunakeun basa Sunda dina ngungkulan pasualan sapopoe.

sumber: www.habr.com

Tambahkeun komentar