R - 如果日期在范围内,则求和

2023-12-11

我已经设法在 excel 中轻松完成此操作,但想在 R 中完成此操作:

我有两个数据框:

MediaPlanDF(215 个 obs,29 个 var)

我只关心其中的 4 个变量:

开始日期(航班日期), 结束日期(航班日期), 每日消费, 每日展示次数

OutputDF(35 个 obs,1 个 var)

日期:输出DF[[1]]

2015 年 8 月 31 日至 2015 年 4 月 10 日期间进行了 35 次观察

这就是设置,或者至少是我的设置方式(所有日期格式正确)。

我需要做的基本上是向 ouputDF 添加 2 列:每日印象数和每日支出

每日印象数 = 如果 OutputDF 中的日期落在 MediaPlanDF 的开始日期和结束日期内,则对满足该条件的所有 #dailyimpressions 求和。

每日印象数 = 如果 OutputDF 中的日期落在 MediaPlanDF 的开始日期和结束日期内,则对满足该条件的所有 #dailyspend 进行求和。

这是两个 DF 的示例:

MediaPlanDF(我关心的部分):

#daysinflight   #dailyimpressions   #dailyspend Campaign name   Campaign ID Campaign flight start date  Campaign flight end date
35  392857.1429 1571.428571 A Real Advertiser   RAND0M  8/31/2015   10/4/2015
35  85714.28571 428.5714286 A Real Advertiser   RAND0M  8/31/2015   10/4/2015
35  142857.1429 714.2857143 A Real Advertiser   RAND0M  8/31/2015   10/4/2015
35  62857.14286 942.8571429 A Real Advertiser   RAND0M  8/31/2015   10/4/2015

OutputDF

Date
8/31/2015
9/1/2015
9/2/2015
9/3/2015
9/4/2015
9/5/2015
...
10/4/2015

感谢您提前提供的任何帮助。

我收到此错误:

as.POSIXlt.character(as.character(x), ...) 中的错误: 字符串不是标准的明确格式

这是输出

structure(list(site = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Accuen", 
"Amazon", "Bleacher Report", "Brightroll", "Buzzfeed", "CBSi", 
"College Humor", "Complex", "ESPN", "GDN", "HULU", "IGN", "Millennial", 
"Nativo", "NBA", "NBC Sports", "Pandora", "Reddit", "Spotify", 
"Tremor", "TrueX", "Twitch", "Wikia", "Woven", "Yahoo!", "YouTube"
), class = "factor"), daysinflight = c(35L, 35L, 35L, 35L, 35L, 
35L), dailyimpressions = c(392857.1429, 85714.28571, 142857.1429, 
62857.14286, 17142.85714, 72380.94286), dailyspend = c(1571.428571, 
428.5714286, 714.2857143, 942.8571429, 428.5714286, 1085.714286
), Campaign.name = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "A Real Advertiser", class = "factor"), 
    Campaign.ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "RAND0M", class = "factor"), 
    startdate = structure(c(16678, 16678, 16678, 16678, 16678, 
    16678), class = "Date"), enddate = structure(c(16712, 16712, 
    16712, 16712, 16712, 16712), class = "Date"), Campaign.budget = c(5100206L, 
    5100206L, 5100206L, 5100206L, 5100206L, 5100206L), Campaign.planned.cost = c(4663350.2, 
    4663350.2, 4663350.2, 4663350.2, 4663350.2, 4663350.2), Campaign.buy.total = c(4663350.2, 
    4663350.2, 4663350.2, 4663350.2, 4663350.2, 4663350.2), Supplier = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = c("ACCUEN", "AMAZON (AMZN MED GP)", 
    "BRIGHTROLL", "BUZZFEED.COM", "CBS DIGITAL MEDIA", "COLLEGE HUMOR", 
    "COMPLEX.COM", "ESPN.COM", "GOOGLE DISPLAY NTWK", "HULU", 
    "IGN.COM", "MILLENNIAL MEDIA", "NATIVO.NET", "NBC.COM", "PANDORA MEDIA, INC.", 
    "REDDIT.COM", "SPOTIFY.COM", "TREMORMEDIA.COM", "TRUEX MEDIA INC.", 
    "TURNER MEDIA GROUP", "TWITCH.TV", "WIKIA.COM", "WOVENDIGITAL.COM", 
    "YAHOO! US", "YOUTUBE, LLC."), class = "factor"), Site = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = c("ACCUEN", "AMAZON.COM", "BLEACHER REPORT", 
    "BRIGHTROLL", "BUZZFEED.COM", "CBS INTERACTIVE", "COLLEGEHUMOR", 
    "COMPLEX", "COMPLEX.COM", "ELECTUS", "ESPN.COM", "GOOGLE DISPLAY NTWK", 
    "HULU", "IGN.COM", "MILLENNIAL MEDIA", "NATIVO", "NBA", "NBCSPORTS.COM", 
    "PANDORA", "REDDIT", "SPOTIFY", "TREMOR VIDEO", "TRUEX", 
    "TWITCH", "WIKIA", "WOVEN", "YAHOO", "YOUTUBE, LLC."), class = "factor"), 
    Flight.start.date = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("10/3/2015", 
    "8/31/2015", "9/1/2015", "9/10/2015", "9/11/2015", "9/13/2015", 
    "9/14/2015", "9/15/2015", "9/16/2015", "9/17/2015", "9/18/2015", 
    "9/2/2015", "9/20/2015", "9/21/2015", "9/24/2015", "9/25/2015", 
    "9/27/2015", "9/28/2015", "9/7/2015", "9/9/2015"), class = "factor"), 
    Flight.end.date = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("10/3/2015", 
    "10/4/2015", "9/11/2015", "9/13/2015", "9/15/2015", "9/17/2015", 
    "9/18/2015", "9/2/2015", "9/20/2015", "9/27/2015", "9/30/2015"
    ), class = "factor"), Cost.method = structure(c(3L, 3L, 3L, 
    3L, 3L, 3L), .Label = c("CPC", "CPE", "CPM", "Flat", "Free"
    ), class = "factor"), Rate = c(43, 15, 5, 125, 25, 15), Planned.unit.amount = c(13750000L, 
    3000000L, 5000000L, 2200000L, 600000L, 2533333L), Cost = c(55000, 
    15000, 25000, 33000, 15000, 38000), Excluded = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = "No", class = "factor"), Company.ID = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = "skrt", class = "factor"), 
    Person.ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "smgboi", class = "factor"), 
    Exported.by = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "some guy", class = "factor"), 
    Exported.on = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "2015-10-06 18:53:12, EDT", class = "factor"), 
    Exported.from = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "media", class = "factor")), .Names = c("site", 
"daysinflight", "dailyimpressions", "dailyspend", "Campaign.name", 
"Campaign.ID", "startdate", "enddate", "Campaign.budget", "Campaign.planned.cost", 
"Campaign.buy.total", "Supplier", "Site", "Placement.name", "Buy.details", 
"Positioning", "Unit.dimensions", "Flight.start.date", "Flight.end.date", 
"Cost.method", "Rate", "Planned.unit.amount", "Cost", "Excluded", 
"Company.ID", "Person.ID", "Exported.by", "Exported.on", "Exported.from"
), row.names = c(NA, 6L), class = "data.frame")

首先,我们需要确保您的日期格式等正确。我假设它们是,我的版本在最后。您还没有提供dput并且有一些奇怪的列名,因此请仔细检查间距和大写字母。

接下来,我们来构建一个interval库中每个活动的对象lubridate:

library(lubridate)
MediaPlanDF$interval <- interval(MediaPlanDF$Campaign.flight.1, MediaPlanDF$end.date)

现在我们可以测试outputDF中的每个项目是否在每个区间中,如果是,则对其求和(您的测试数据具有所有区间中的所有元素):

output <- do.call(rbind, lapply(OutputDF$Date, function(x){
                              index <- x %within% MediaPlanDF$interval;
                              list(impressions = sum(MediaPlanDF$dailyimpressions[index]),
                                   spend = sum(MediaPlanDF$dailyspend[index]))}))

我们从哪里得到输出:

cbind(output, OutputDF)
  impressions    spend       Date
1    684285.7 3657.143 2015-08-31
2    684285.7 3657.143 2015-09-01
3    684285.7 3657.143 2015-09-02
4    684285.7 3657.143 2015-09-03
5    684285.7 3657.143 2015-09-04
6    684285.7 3657.143 2015-09-05

data:

输出DF:

structure(list(Date = structure(c(16678, 16679, 16680, 16681, 
16682, 16683), class = "Date")), .Names = "Date", row.names = c(NA, 
-6L), class = "data.frame")

媒体计划DF:

structure(list(daysinflight = c(35L, 35L, 35L, 35L), dailyimpressions = c(392857.1429, 
85714.28571, 142857.1429, 62857.14286), dailyspend = c(1571.428571, 
428.5714286, 714.2857143, 942.8571429), Campaign.name = structure(c(1L, 
1L, 1L, 1L), .Label = "A", class = "factor"), Campaign.ID = structure(c(1L, 
1L, 1L, 1L), .Label = "Real", class = "factor"), Campaign.flight = structure(c(1L, 
1L, 1L, 1L), .Label = "Advertiser", class = "factor"), start.date = structure(c(1L, 
1L, 1L, 1L), .Label = "RAND0M", class = "factor"), Campaign.flight.1 = structure(c(16678, 
16678, 16678, 16678), class = "Date"), end.date = structure(c(16712, 
16712, 16712, 16712), class = "Date")), .Names = c("daysinflight", 
"dailyimpressions", "dailyspend", "Campaign.name", "Campaign.ID", 
"Campaign.flight", "start.date", "Campaign.flight.1", "end.date"
), row.names = c(NA, -4L), class = "data.frame")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R - 如果日期在范围内,则求和 的相关文章

  • 我可以使用哪个 R 函数来查找两条线的交点?

    我刚刚研究了 stackoverflow 上所有的 在 R 中寻找交集 问题 它们要么是关于曲线 要么是关于分布像这个 https stackoverflow com questions 20519431 finding point of
  • R ggplot 中的柯尔莫哥洛夫-斯米尔诺夫图

    我正在尝试在 r 中绘制 KS 图 一切似乎都很顺利 除了我只能使用颜色来可视化两个不同的样本而不是线型这一事实 我已经尝试过以下方法 sample1 lt SD13009 sample2 lt SD13009PB group lt c r
  • Cakephp 自定义日期输入表单助手的输出

    I got echo this gt Form gt input birthdate array label gt Geburtsdatum true dateFormat gt DMY minYear gt date Y 70 maxYe
  • 闪亮的应用程序包:css 和所有 www/ 目录内容

    我正在尝试将 Shiny 应用程序转换为 R 包 但我在处理有关 www 目录以及 松散 文件的所有问题时遇到了问题 我闪亮的应用程序运行得很好 但是当我尝试 打包它 时 它不起作用 我闪亮的应用程序目录 my shiny app R ut
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 当将遗传算法与 lme4 一起使用时,glmulti 无限期运行

    我在 R 中使用 glmulti 进行模型平均 我的模型中有大约 10 个变量 使得详尽的筛选不切实际 因此我需要使用遗传算法 GA 调用 method g 我需要包含随机效应 因此我使用 glmulti 作为 lme4 的包装器 此处提供
  • 使用点阵个性化 R 上显示的 X 轴值

    我收集了大量包含日期 客户端及其 NFS 使用情况的数据 我正在使用lattice R包进行绘图 正如对超级用户的建议 https superuser com questions 523195 plot custom log data on
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • R:改变堆积条形图的颜色

    library ggplot2 df2 lt data frame supp rep c VC OJ each 3 dose rep c D0 5 D1 D2 2 len c 6 8 15 33 4 2 10 29 5 head df2 g
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c

随机推荐

  • 如何在画布上分层绘制图像?

    我有一个我使用的画布drawImage将一堆图像绘制到画布上 我想要的结果是 我希望我绘制的第一个图像位于第 1 层 下一个图像位于第 2 层 依此类推 到底发生了什么 图像被放置在随机层上 const images https attef
  • 如何更改表情符号的颜色?

    我有一个表情符号 我希望它是白色的 但是当我运行程序时它显示为红色 如何将其更改为白色 rating text rating textColor UIColorRGB ffffff The 以下答案解释了为什么您无法更改表情符号字符的颜色
  • 获取自定义控件的ID

    我有一个相当复杂的自定义控件 可以在任何给定的 XPage 上多次使用该控件 在控件中 我创建了几个 viewScope 变量 这些变量对于特定的自定义控件来说必须是唯一的 我想做类似 viewScope put customControl
  • Joomla 3 - 使用什么来代替 allocateRef?

    在我的项目中 我认为有这种方法 public function elegirSeleccionados this gt assignRef pagination this gt get pagination this gt assignRe
  • 根据概率选择获胜者的随机数

    想象一下 您有一组代表竞争对手及其获奖概率的哈希值 0 到 1 之间的浮点数 喜欢 name gt Adam prob gt 0 5 name gt Ben prob gt 1 0 name gt Chris prob gt 0 1 nam
  • 关于国家/地区更改 Ajax 更新 Woocommerce 中运输的结帐

    我正在寻找一种当客户在结帐页面上更改国家 地区时更新订单审核 运费 的方法 我想使用 jQuery 但wc checkout paramswc checkout params 已弃用 function custom checkbox che
  • 为 Qt5 指定 OpenGL 桌面而不是 ES

    我终于尝试使用着色器来理解着色器tutorial我发现 我决定从 Qt5 Windows 开始 因为我熟悉它并且可以专注于学习 GLSL 本身 我正在做的事情和教程之间的唯一区别是我正在使用QOpenGLWidget而不是一个QOpenGL
  • HttpResponse.getEntity() NetworkOnMainThreadException [重复]

    这个问题在这里已经有答案了 可能的重复 网络主线程异常 很长一段时间以来 我一直在使用通用代码来执行 http 请求AsyncTask The AsyncTask返回一个HttpResponse目的 一切都运行良好 GUI 线程从未冻结或出
  • ecs-cli 使用负载均衡器组成服务

    我正在尝试使用 ecs cli compose 来管理 Amazon ECS 上的服务和任务 我无法找到使用的方法service up命令使用应用程序负载均衡器创建新服务 即使该负载均衡器已存在 这似乎可以与service create 但
  • Windows Phone - Phonegap 推送通知 - 注册我的设备后无法获取 URI

    我在用推送插件在我的 wp8 的 cordova phonegap 应用程序中 我自动安装了插件 cordova plugin add https github com phonegap build PushPlugin git 当我的设备
  • 将 typeahead.js 输出到多个文本框中

    我正在为我的公司开发一个内部 Web 表单 我试图使用 typehead js 从本地数组加载名称 我能够毫无问题地执行此操作 但是任务的第二部分是当在第一个文本框中选择员工姓名时 将该员工的 ID 放入第二个文本框中 我无法成功地将值输出
  • jQuery 存储和检索表单状态(带数据)

    有什么方法可以将表单状态存储在例如 cookie 中并检索它吗 我检查了序列化API但我不知道如何检索表单上的序列化数据 是否可以 Update 我把我的代码here 检查 End of cookie 插件后的 javascript 代码
  • 解决“找不到资源”的问题。错误

    我有一个 MVC 3 应用程序 其中内置了几个区域 其中一个区域是我网站的管理部分 一切都工作得很好 我想尝试 MvcContrib Portable Areas 以使我的应用程序更加模块化 因此我安装了 MvcContrib 经过一番尝试
  • 实体框架 4 / POCO - 从哪里开始? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我已经编程了一段时间 并且之前使用过 LINQ To SQL 和 LINQ To Entities 尽管在使用实体时它一直处于实体 表 1 1 关系上 即与 L2SQL 没有太大区别
  • Pebble 手表开发教程中的这个点语法是什么意思? [复制]

    这个问题在这里已经有答案了 我在 Pebble 手表应用程序开发教程中遇到了以下代码 Set handlers to manage the elements inside the Window window set window handl
  • 我可以检测窗口是否部分隐藏吗?

    是否可以检测我的外部程序的窗口是否 1 完全可见 2 部分隐藏或 3 完全隐藏 如果窗口 基于检索到的句柄 不可见 我希望能够告诉我的应用程序不要执行任何操作 我不关心窗口是否有焦点 z 顺序是什么 或者其他什么 我只关心窗口显示了多少 如
  • 使用 Amazon API MWS 进行签名查询

    我正在尝试向卖家亚马逊网络服务 MWS 提出签名请求 我正在使用这里的脚本 将亚马逊 MWS 暂存器查询转换为 API 调用 但我不知道为什么会出现错误 我们计算的请求签名与您提供的签名不匹配 请检查您的 AWS 秘密访问密钥和签名方法 有
  • 在运行时实现接口

    是否可以使已编译的类在运行时实现某个接口 例如 public interface ISomeInterface void SomeMethod public class MyClass this is the class which i w
  • pySerial write() 在 Python 解释器中工作正常,但在 Python 脚本中不行

    最近 我正在尝试在Arduino上进行某种 灯光控制 我使用 Raspberry Pi 通过串口 USB 电缆 发送控制消息 这是 Arduino 代码 int redled 12 int whiteled 48 void setup Se
  • R - 如果日期在范围内,则求和

    我已经设法在 excel 中轻松完成此操作 但想在 R 中完成此操作 我有两个数据框 MediaPlanDF 215 个 obs 29 个 var 我只关心其中的 4 个变量 开始日期 航班日期 结束日期 航班日期 每日消费 每日展示次数