【问题标题】:Melting Data by Date Range按日期范围熔化数据
【发布时间】:2019-01-31 20:06:23
【问题描述】:

我遇到了关于正确融合数据的 RStudio 数据问题。目前的形式如下:

广告系列、ID、开始日期、结束日期、总天数、总支出、总展示次数、总转化次数

我希望我的数据如下所示:

广告系列、ID、日期、支出、展示次数、转化次数

每个“日期”应包含广告系列运行的特定日期,而支出、展示次数和转化次数应等于总支出/总天数、总印象数/总天数和总转化次数/总天数,分别。

我在 RStudio 工作,因此需要 R 中的解决方案。有没有人有这样处理数据的经验?

【问题讨论】:

  • 欢迎来到 SO。请edit 您的问题并提供minimal reproducible example 以及预期结果。特别是,当您引用特定数据时,不清楚您所说的总支出/总天数是什么意思。您是指迄今为止的支出还是整个期间的总支出(开始日期到结束日期)

标签: r dataframe data-cleaning melt data-munging


【解决方案1】:

这行得通,但不是特别有效。如果您的数据是数百万行或更多行,那么我使用 SQL 和不等式连接会更好。

library(tidyverse)

#create some bogus data
data <- data.frame(ID = 1:10,
                   StartDate = sample(seq.Date(as.Date("2018-01-01"), as.Date("2018-12-31"), "day"), 10),
                   Total = runif(10)) %>% 
  mutate(EndDate = StartDate + floor(runif(10) * 14))


#generate all dates between the min and max in the dataset
AllDates = data.frame(Date = seq.Date(min(data$StartDate), max(data$EndDate), "day"),
                      Dummy = TRUE)

#join via a dummy variable to add rows for all dates to every ID
data %>% 
  mutate(Dummy = TRUE) %>% 
  inner_join(AllDates, by = c("Dummy" = "Dummy")) %>% 
  #filter to just the dates between the start and end
  filter(Date >= StartDate, Date <= EndDate) %>% 
  #divide the total by the number of days
  group_by(ID) %>% 
  mutate(TotalPerDay = Total / n()) %>% 
  select(ID, Date, TotalPerDay)

# A tibble: 91 x 3
# Groups:   ID [10]
        ID    Date       TotalPerDay
      <int>   <date>      <dbl>
  1     1 2018-06-21     0.00863
  2     1 2018-06-22     0.00863
  3     1 2018-06-23     0.00863
  4     1 2018-06-24     0.00863
  5     1 2018-06-25     0.00863
  6     1 2018-06-26     0.00863
  7     1 2018-06-27     0.00863
  8     1 2018-06-28     0.00863
  9     1 2018-06-29     0.00863
  10     1 2018-06-30     0.00863
  # ... with 81 more rows

【讨论】:

    猜你喜欢
    • 2015-11-16
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2014-10-20
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多