列出两个日期之间的日期,并将与新日期关联的金额除以相应的日期和ID R / PYTHON / EXCEL

问题描述 投票:0回答:1

我的数据看起来像这样。我计算了入住日期和退房日期之间的差,以获取天数,并根据天数将“值”划分为各个日期。对于前。 ID 3222808停留了2天,所以我将值458/2除以并将其分配给每个日期。我如何在R或Excel中做到这一点。

ID值签入签出3222808 458 11/15/2019 11/17/2019606203 238 10/28/2019 10/30/2019334229 218 11/16/2019 11/18/2019837066 218 11/16/2019 11/18/2019620384 218 11/16/2019 11/18/2019534690 218 11/16/2019 11/18/20193192449 298 11/16/2019 11/18/2019

输出应类似于-ID值日期3222808 229 11/15/20193222808 229 11/16/2019

我当前正在使用的代码给我这个-

library(dplyr)
pm <- df %>%
rowwise() %>% 
do(data.frame(.[1:2], date = seq(.$Checkin, .$Checkout, by = "1 day")))

赞助人起息日

3222808 458 11/15/20193222808 458 11/16/20193222808 458 11/17/2019606203 238 2019年10月28日606203 238 2019年10月29日606203 238 2019年10月30日334229 218 11/16/2019

从这里开始,我不知道如何将它们分组并划分金额。

mysql r excel data-science data-analysis
1个回答
0
投票

此答案的主要驱动因素是pivot_longer()中的tidyr

df %>%
  mutate(number_days = interval(Checkin, Checkout) %>%
           as.duration() %>%
           as.numeric("days")) %>%
  pivot_longer(c(Checkin, Checkout), names_to = "names", values_to = "Date") %>%
  mutate_at("Value", ~(Value / number_days)) %>%
  select(ID, Value, Date)

# A tibble: 14 x 3
        ID Value Date      
     <int> <dbl> <date>    
 1 3222808   229 2019-11-15
 2 3222808   229 2019-11-17
 3  606203   119 2019-10-28
 4  606203   119 2019-10-30
 5  334229   109 2019-11-16
 6  334229   109 2019-11-18
 7  837066   109 2019-11-16
 8  837066   109 2019-11-18
 9  620384   109 2019-11-16
10  620384   109 2019-11-18
11  534690   109 2019-11-16
12  534690   109 2019-11-18
13 3192449   149 2019-11-16
14 3192449   149 2019-11-18
© www.soinside.com 2019 - 2024. All rights reserved.