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 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi
  • toLocaleDateString() 在 Chrome 中如何工作?

    我理解了javascript方法toLocaleDateString 使用的计算机设置 让我们来W3Schools 示例 http www w3schools com jsref tryit asp filename tryjsref to
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 解析,用三点参数替换

    让我们考虑一个典型的deparse substitute R call f1 lt function u x y print deparse substitute x varU vu varX vx varY vy f1 u varU x
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

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

    我有一个我使用的画布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 个变量 开始日期 航班日期 结束日期 航班日期 每日消费 每日展示次数