Количество дней в месяце между двумя датами

Наборы

Наборы можно комбинировать с помощью математических операций.

  • Объединенный оператор | объединяет два набора, чтобы сформировать новый, содержащий элементы в любом из них.
  • Оператор пересечения & получает элементы только в обоих.
  • Оператор разницы - получает элементы в первом наборе, но не во втором.
  • Симметричный разностный оператор ^ получает элементы в любом наборе, но не оба.

Попробуйте сами:

first = {1, 2, 3, 4, 5, 6}
second = {4, 5, 6, 7, 8, 9}

print(first | second)

print(first & second)

print(first - second)

print(second - first)

print(first ^ second)

Результат :

{1, 2, 3, 4, 5, 6, 7, 8, 9}

{4, 5, 6}

{1, 2, 3}

{8, 9, 7}

{1, 2, 3, 7, 8, 9}
-1
задан Zoe 13 July 2018 в 14:50
поделиться

1 ответ

Возможно, возможно более короткое решение, но я нахожу это очень удобочитаемым :) Сокращенный месяц находится в моей локали (голландском) ... он изменяется в зависимости от настроек вашего ПК .. или вы можете установить его inline (?lubridate::month)

library(tidyverse)
library(lubridate)
#create a vector of all dates within the given ranges
v <- apply( df, 1, function(x) {seq( as.Date(x[2], format = "%Y-%m-%d"), as.Date(x[3], format = "%Y-%m-%d"), by ="day" )}) %>%
  unlist() %>%
  as.Date( origin = "1970-01-01" ) 

#put the dates in a data.frame, use lubridate to extract year and month-data
df2 <- data.frame ( date = v ) %>%
  mutate( Ano = lubridate::year( date ) ) %>%
  mutate( Mes = lubridate::month( date, abbr = TRUE, label = TRUE ) ) %>%
  group_by( Ano, Mes ) %>%
  summarise( Value = n() ) %>%
  select( Ano, Mes, Value)

# > df2
# # A tibble: 6 x 3
# # Groups:   Ano [2]
#     Ano Mes   Value
#    <dbl> <ord> <int>
# 1  2015 okt       2
# 2  2015 nov      33
# 3  2015 dec      55
# 4  2016 jan      33
# 5  2016 feb      29
# 6  2016 mrt       5
0
ответ дан Wimpel 17 August 2018 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: