Мне нужно наборы данных, которые я хочу объединить:
Набор данных 1: содержит периоды времени, для которых действует "perc":
set.seed(1)
example_df <- data.frame(ID = rep(1:2, each=2),
start = c(as.Date("2014-01-01"), as.Date("2014-03-05"), as.Date("2014-01-13"), as.Date("2014-03-15")),
end = c(as.Date("2014-03-05"), as.Date("2014-04-12"), as.Date("2014-03-01"), as.Date("2014-04-02")),
perc = rnorm(mean= 30, sd= 10, 4))
Набор данных 2: содержит плату за каждыйmonth:
month_start <- as.Date("2014-01-01") + months(0:3)
month_end <- ceiling_date(month_start, "month") - days(1)
set.seed(1)
example_df2 <- data.frame(month_start, month_end,
ID = rep(1:2, each=4),
pay = rnorm(mean= 2000, sd= 80, 8))
Цель состоит в том, чтобы рассчитать заработную плату для каждого человека за каждый месяц, основываясь на том, сколько процентов они работали.Важно принять во внимание действительные периоды времени для perc, которые могут измениться в течение месяца.
Например:
Январь 2014 для ID 1: Pay = 1949.884 (pay) * 23.73546 (perc) / 100
, поскольку perc действителен в течение всего января.
Однако в марте значение perc составляет 23.73546 до 5-го числа, а perc - 31.83643 до конца марта.
Таким образом,
марта 2014 года для удостоверения личности 1: оплата = 1949,884 (оплата) * 23,73546 (проц) / 100/31 (дни марта) * 5 + 1949,884 (оплата) * 31,83643 (perc) / 100/31 (дни марта) * 26