Функция, которая дает мне весь список дат месяца

Есть ли функция, которая могла бы перечислить мне все даты в указанном месяце (годе)

то есть:

proper_function("January",2019)

результат

 [1] "2019-01-01" "2019-01-02" "2019-01-03" "2019-01-04" "2019-01-05" "2019-01-06" "2019-01-07"
 [8] "2019-01-08" "2019-01-09" "2019-01-10" "2019-01-11" "2019-01-12" "2019-01-13" "2019-01-14"
[15] "2019-01-15" "2019-01-16" "2019-01-17" "2019-01-18" "2019-01-19" "2019-01-20" "2019-01-21"
[22] "2019-01-22" "2019-01-23" "2019-01-24" "2019-01-25" "2019-01-26" "2019-01-27" "2019-01-28"
[29] "2019-01-29" "2019-01-30" "2019-01-31"

Я мог бы написать простую программу, поскольку, кроме февраля, каждый месяц имеет фиксированные даты для любого года, но я полагаю, что в некоторых базовых пакетах должна быть какая-то существующая функция.

Попробуйте proper_function<-function(month,year) {x<-as.Date(paste(1:31,month,year),"%d %b %Y");x[!is.na(x)]}.

nicola 30.05.2019 09:12

Я думаю, что понял вашу идею, удалив NA для недопустимой даты в течение месяца, но %b можно изменить на %B, чтобы заполнить мою исходную информацию «Январь», а не «Ян» @nicola

cloudscomputes 30.05.2019 09:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
93
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Написать его не составит труда. Используя только базу R, вы можете сделать

proper_function <- function(month, year) {
   start <- as.Date(paste0("01", month,year), "%d%B%Y")
   end <- seq(start, length.out = 2, by = "month")[2]
   seq(start, end - 1, by  = "day")
}

proper_function("June",2019)
# [1] "2019-06-01" "2019-06-02" "2019-06-03" "2019-06-04" "2019-06-05"....  
#     "2019-06-25" "2019-06-26" "2019-06-27" "2019-06-28" "2019-06-29" "2019-06-30"

proper_function("February",2019)
#[1] "2019-02-01" "2019-02-02" "2019-02-03" "2019-02-04" "2019-02-05" ....
#    "2019-02-25" "2019-02-26" "2019-02-27" "2019-02-28"

Вы можете решить, какой формат будет принимать ваш ввод, и соответствующим образом изменить параметр format в as.Date.

Таким образом, вы получаете начальную дату из моей информации, затем находите первую дату следующего месяца, таким образом, получаете конечную точку этого месяца, затем получаете последовательность в соответствии с первой и последней датой месяца, идея ясна~ Ключевой метод вторая строка, которая спасает вас от выяснения, сколько дат в каждом месяце. Если нет прямого метода, я думаю, что этот работает

cloudscomputes 30.05.2019 09:51

@cloudscomputes вы можете немного оптимизировать (?) или сэкономить несколько нажатий клавиш, чтобы получить end, используя month из lubridate, но я не знаю прямой функции.

Ronak Shah 30.05.2019 09:57

Вы можете использовать смазочный пакет. Вам просто нужно указать месяц в следующем формате:

proper_function <- function(x) {
  x <- as_date(x)
  y <- days_in_month(x)
  as_date(1:y, origin = x-1)
}
x <- c("2012-02-01")
proper_function(x)
 [1] "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-04" "2012-02-05" "2012-02-06" "2012-02-07" "2012-02-08"
 [9] "2012-02-09" "2012-02-10" "2012-02-11" "2012-02-12" "2012-02-13" "2012-02-14" "2012-02-15" "2012-02-16"
[17] "2012-02-17" "2012-02-18" "2012-02-19" "2012-02-20" "2012-02-21" "2012-02-22" "2012-02-23" "2012-02-24"
[25] "2012-02-25" "2012-02-26" "2012-02-27" "2012-02-28" "2012-02-29"

Другие вопросы по теме