Праздничное сопоставление для разных штатов - PullRequest
0 голосов
/ 09 ноября 2018

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

Например, у меня есть таблицы A и B следующим образом: если дата в таблице A является выходным днем, соответствующим выходному дню этого состояния в таблице B, столбец holidayIndicator должен быть установлен в 1, в противном случае 0. Возвращение должна быть полная таблица A со значением 0 или 1 в столбце holidayIndicator.

Table A:
date    state   holidayIndicator
1/1/2018    E   0
2/1/2018    F   0
3/1/2018    G   0
4/1/2018    E   0
5/1/2018    F   0
6/1/2018    G   0

Table B
State   Holiday
E   1/1/2018
E   3/1/2018
E   3/28/2018
F   5/26/2018
F   6/2/2018
F   7/1/2018
G   9/1/2018
G   6/1/2018
G   5/29/2018

Результат должен выглядеть следующим образом

date    state   holidayIndicator
1/1/2018    E   1
2/1/2018    F   0
3/1/2018    G   0
4/1/2018    E   0
5/1/2018    F   0
6/1/2018    G   1

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Предполагая, что две таблицы: df1 и df2

df1 $ holidayIndicator [Interaction (df1 [, c ('date', 'state')])%% взаимодействия (df2 [, c ('Holiday', 'State')])] <- 1 </p>

0 голосов
/ 09 ноября 2018

Чистое решение на основе data.frame (без использования пакетов dplyr или data.table будет выглядеть так:

a <- read.table(text = "date    state   holidayIndicator
1/1/2018    E   0
2/1/2018    F   0
3/1/2018    G   0
4/1/2018    E   0
5/1/2018    F   0
6/1/2018    G   0", header = TRUE, stringsAsFactors = FALSE)

b <- read.table(text = "State   Holiday
E   1/1/2018
E   3/1/2018
E   3/28/2018
F   5/26/2018
F   6/2/2018
F   7/1/2018
G   9/1/2018
G   6/1/2018
G   5/29/2018", header = TRUE, stringsAsFactors = FALSE)

b$isHoliday <- 1   # add a helper column (auto-fills all rows with the same value)

# "inner join" similar to SQL to "enrich" the helper column value
res <- merge(a, b, by.x = c("date", "state"), by.y = c("Holiday", "State"), all.x = TRUE)

res$holidayIndicator[res$isHoliday == 1] <- 1  # mark the holidays using the enriched helper column

# Optionally: Remove the helper column from the result
res$isHoliday <- NULL
0 голосов
/ 09 ноября 2018

Я не так хорошо знаком с R, но задаюсь вопросом, не могли бы вы использовать пакет / библиотеку, например 'bizdays', чтобы определить, является ли данная дата выходным или нет.

https://cran.r -project.org / веб / пакеты / bizdays / bizdays.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...