根据其他数据框的函数创建新的数据框

2024-04-24

我是 R 的新手,所以我可能很难提出我的问题。请多多包涵。

我有两个数据框。为了解释起见,我们假设:

df1

柱形代表收益类型:玉米、燕麦、小麦等。 行代表一年中的月份,一月、二月等。 Elements 代表在该特定月份购买的增益类型的每吨价格。

df2

代表国家的列:西班牙、智利、墨西哥等。 该框的行代表与该国家/地区打交道的额外费用,可能是: 每个国家的包装成本、运输成本、国家进口税、检验费等。

现在我想构建第三个数据框:

df3

它代表所有国家每月谷物组合(例如 10% 玉米、50% 燕麦等)的总成本以及运输、税收等相关成本 假设有一个等式(使用 df1 和 df2 的数据)计算每个国家每月给定谷物组合的总成本以及每个国家的额外成本。

为了简洁起见,我们假设三月份总成本的等式的一部分,西班牙是

cost <- .10 * df1[ “mar”,”oats”]  + df2[“tax”,”Spain”]  + .....

对我来说,选择第二个数据帧的元素并与第一个数据帧的列进行算术运算以获得结果是很简单的。对于特定国家:

cost <- .10 * df1[ ,”oats”]  + df2[“tax”,”Spain”]  + .....

这给了我西班牙每个月的费用

问题是:我必须对每个国家重复相同的算术。

另一个版本:

  cost <- .10 * df1[ ,”oats”]  + df2[“tax”,]  + .....

为我提供每个国家/地区的费用,但仅限一月份

我想要一组方程,可以计算出所有县每月的总成本。另外一句话,df3将具有相同的行数df1(月),以及相同的列数df2(国家)。

编辑...粘贴在已关闭问题中发布的示例中:

# build df1 - cost of grains (with goofy data so I can track the arithemetic)
  v1 <- c(1:12)
  v2 <- c(13:24)
  v3 <- c(25:36)
  v4 <- c(37:48)
  grain <- data.frame("wheat"=v1,"oats"=v2,"corn"=v3,"rye"=v4)

  grain

# build df2 - additional costs (again, with goofy data to see what is being used where and when)
  w1 <- c(1.3:4.3)
  w2 <- c(5.3:8.3)
  w3 <- c(9.3:12.3)
  w4 <- c(13.3:16.3)
  cost <- data.frame("Spain"=w1,"Peru"=w2,"Mexico"=w3,"Kenya"=w4)
  row.names(cost) <- c("packing","shipping","tax","inspection")

  cost

# assume 10% wheat, 30% oats and 60% rye with some clown-equation for total cost
# now for my feeble attempt at getting a dataframe that has 12 rows (months) and 4 column (countries)

  total_cost <- data.frame( 0.1*grain[,"wheat"] +
                            0.3*grain[,"oats"] +
                            0.6*grain[,"rye"] +
                            cost["packing","Mexico"] +
                            cost["shipping","Mexico"] +
                            cost["tax","Mexico"]  +
                            cost["inspection","Mexico"] )
  total_cost

您有两种选择:一种是使用outer函数从 df2 的 colnames 提供“月份”向量和“国家/地区”向量的输入,并使用从 df1 和 df2 中提取“成本”分量的函数。 (无法使该方法发挥作用。)您将得到一个“月份”x“国家/地区”矩阵。另一种方法是转置 df2 数据帧并使用 all=TRUE 与 df1 合并,获取“长”格式数据帧,您可以从中使用公式进行列操作,然后重新整形为“国家/地区”中“宽”的格式。详细信息将取决于具体的数据设置,并且您尚未提供示例。

这将为您提供 12 x 4 月份和国家组合的网格:

 dfrm <- expand.grid(grain$months,  colnames(cost) )

这将为您提供一个函数,该函数采用月份值和国家/地区值并计算上面的表达式:

 costcros <- function(x) { sum(grain[ grain[, 'months'] == x[1], c(1,2,4)]*c(0.1,0.3,0.6) ) + 
                           sum( cost[, x[2]]) }

这会将计算添加到 dfrm 的每一行:

 dfrm$crosscost <- apply(expand.grid(grain$months,  colnames(cost) ), 1,  costcros)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据其他数据框的函数创建新的数据框 的相关文章

  • 使用多边形图层下方的轮廓线切割多边形

    我想根据高程将多边形图层切割成两部分 上部和下部 多边形可能是凸的或凹的 并且切割的位置可能彼此不同 等高线的间隔为 5m 这意味着我可能需要生成一个具有更紧凑的等高线的等高线 例如 1m 的间隔 关于如何做到这一点的任何想法 在 ArcG
  • 如果 RCurl::getURL() 执行时间太长,如何停止执行?

    有没有办法告诉 R 或 RCurl 包在超过指定时间段时放弃尝试下载网页并转到下一行代码 例如 gt library RCurl gt u http photos prnewswire com prnh 20110713 NY34814 b
  • R 监督潜在狄利克雷分配包

    我在用着这个LDA包 https cran r project org web packages lda 对于 R 具体来说 我正在尝试做监督潜在狄利克雷分配 slda https www cs princeton edu blei pap
  • GitHub 操作 setup-r-dependency 失败,说明没有名为“digest”的包

    我一直在尝试设置一些 GitHub 操作来自动检查我的 R 包并运行测试覆盖率 我目前正在使用 setup r dependency v2 操作来安装依赖项 但无法安装包 digest 返回以下错误 Error Error
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • Dplyr 过滤多个类似条件

    我正在尝试在 dplyr 中做一个过滤器 其中的列就像某些观察结果 我可以使用 sqldf 作为 Test lt sqldf select from database Where SOURCE LIKE ALPHA OR SOURCE LI
  • 如何使用 Rcpp 将 C 结构从 C 库公开到 R

    我正在尝试将 C 结构从 C 库公开到 R 中 例如 struct A int flag 库提供 API 来构造和销毁是很常见的A A initA void freeA A a 感谢RCPP MODULE 很容易暴露它而不考虑析构函数 in
  • ggplot2以限制为中心的多边形世界地图给出了有趣的边缘

    使用下面的代码我生成了一张以华盛顿特区为中心的地图 解决方案基于科斯克的解决方案在这里 https stackoverflow com questions 10620862 use different center than the pri
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 使用 alpha 通道叠加两个 ggplot2 stat_密度2d 图

    我想叠加两个ggplot2使用 alpha 通道进行绘图 结果图像显示两个数据集 这是我的测试数据 data read table text P1 1 0 4 nP2 0 0 2 nP3 2 1 8 nP4 2 2 6 nP5 0 5 2
  • 将 r 中的一列从出生日期更改为年龄

    我是第一次使用 data table 我的表中有大约 400 000 个年龄的列 我需要将它们从出生日期转换为年龄 做这个的最好方式是什么 我一直在思考这个问题 到目前为止对这两个答案都不满意 我喜欢用lubridate 就像 KFB 所做
  • 在 mutate pipeline 中按组获取唯一 ID [重复]

    这个问题在这里已经有答案了 自从新的 dplyr v1 0 0 更新发布以来 我注意到该功能group indices 有 已弃用 我在工作中经常使用这个功能 并且我喜欢在mutate 例如使用dplyr v0 8 3我能够非常轻松地做这样
  • 使用带有字边界的 mgsub 函数作为替换值

    我试图用空格替换向量中字符串元素的子字符串 以下是我们正在考虑的向量 test lt c PALMA DE MALLORCA THE RICH AND THE POOR A CAMEL IN THE DESERT SANTANDER SL
  • 可以使用部分名称访问列表成员吗?这是一个功能吗?

    考虑这个 R 代码 gt l list key 1 gt l k 1 1 gt l ke 1 1 gt l k NULL gt names l 1 key 这是否意味着您可以使用以下方式访问列表成员 及其部分名称 当我在一次令人沮丧的错误搜
  • 在r中水平旋转直方图

    谁能帮我如何在 r 中将直方图旋转 90 度 我知道箱线图中有一个选项 horiz T 但我不知道直方图是否有类似的选项 我认为你必须使用 hist 和 barplot 来完成它 如下所示 直接来自文档 你可以在这里检查它 layout x
  • 使用条件求 R 中的累积和

    我需要创建一个新变量 其中包含每个 ID 过去三年金额的总和 如果没有三年的数据 则应显示 NA 举个例子 ID YEAR AMOUNT 1 2010 5 1 2011 2 1 2012 4 1 2013 1 1 2014 3 2 2013
  • 在 R 中创建 xlsx 工作表 - 字体颜色不起作用

    我正在开发一个项目 需要从特定类型的数据框架自动生成数据电子表格 我读过关于如何执行此操作的有用解释here http www sthda com english wiki r xlsx package a quick start guid
  • x[floor(d)] + x[ceiling(d)] 中的错误:二元运算符的非数字参数

    我试图绘制病毒载量和试验组的简单箱线图 但不断收到此错误 x floor d x ceiling d 中的错误 二元运算符的非数字参数 dataset PatientID trial arm viral load 1 club 19 2 c
  • 使用 dplyr 创建 t.test 表?

    假设我有如下所示的数据 set seed 031915 myDF lt data frame Name rep c A B times c 10 10 Group rep c treatment control treatment cont
  • R 连接到主机时出错

    我已经安装了 R 3 0 2 和包KEGGREST 在使用它的命令时 我收到以下错误 函数错误 类型 消息 asError TRUE 无法连接到 主持人 使用 internet2 选项后 我可以很好地从互联网安装软件包 该选项使用来自 In

随机推荐

  • 如何获取当前显示的片段?

    我正在Android中玩fragment 我知道我可以使用以下代码更改片段 FragmentManager fragMgr getSupportFragmentManager FragmentTransaction fragTrans fr
  • 如何使用 Perl 检查文件的扩展名?

    对于我的 Perl 脚本 一个文件作为参数传递 该文件可以是 txt文件或一个 zip文件包含 txt file 我想编写看起来像这样的代码 if file is a zip unzip file file s zip txt 检查扩展的一
  • 如何删除 prestashop 1.6.1 上的送货步骤?

    我是新来的预斯塔商店我在删除送货步骤时遇到了很大的麻烦 因为我只销售虚拟产品 我正在使用 prestashop 1 6 1 我知道我必须修改order carrier tpl文件并关注了几篇帖子 但无法正确完成 你们中有人对如何做到这一点有
  • 重置rails中的主键id

    当我从表中删除所有并开始再次插入时 我遇到主键如何递增的问题 这是有问题的 因为我还有与已清除表关联的其他模型 例如 如果我有属于 Computer 的 Apple 那么当我清除 Computer 表并重新添加计算机时 关联会变得混乱 因为
  • Android 应用内计费:使用 sku android.test.purchased 时出错(响应:5:开发人员错误)

    我已通过标准助手发送了测试购买意向 String SKU android test purchased mHelper launchPurchaseFlow this SKU 10001 mPurchaseFinishedListener
  • 在 ngrx 上创建非记忆选择器

    是否可以在 ngrx 上创建非记忆选择器 我有一个非常小的选择器来检查存储中的值是否大于 Date now export const selectAuthState createFeatureSelector
  • Where 子句返回所有行中的值错误?

    我有一个如下所示的查询 SELECT id username FROM table name WHERE username 0 当我运行此查询时 MySQL 返回 table name 中的所有行 此外 如果我用 0 代替 false 我会
  • 如何在 Delphi 控制台应用程序中运行控制台应用程序?

    我希望我的控制台应用程序启动另一个控制台应用程序 显示另一个应用程序想要显示的所有内容 然后在另一个应用程序完成并退出后执行某些操作 基本上 Writeln Started ShellExecute 0 open another exe n
  • 处理Oauth 2.0-facebook gem错误100:此授权码已被使用

    我一直在为我的 Rails 应用程序设置 Facebook 身份验证 在测试时 使用我的 Facebook 帐户登录后 我不断收到此错误 OAuth2 Error error message This authorization code
  • Django:编程错误关系不存在

    设置新数据库heroku我试过python manage migrate并得到许多与相关的异常relation already exists does not exists 所以我按照这里的说明进行操作django 1 9 编程错误 关系
  • 如何避免添加多个 NSNotification 观察者?

    目前 API 似乎没有提供一种方法来检测是否已为特定 NSNotification 添加了观察者 除了在端维护一个标志来跟踪之外 避免添加多个 NSNotification 观察者的最佳方法是什么 有人已经创建了一个类别来促进这一点吗 防止
  • 如何设置 CirclePageIndicator 上的项目限制?

    I m using a ViewPager and a CirclePageIndicator from ViewPagerIndicator lib to show images with some circles below but t
  • Shadow DOM v1 CSS 填充

    https developers google com web fundamentals getting started primers shadowdom https developers google com web fundament
  • 如何在实体框架代码优先中设置 0..* 关系?

    我有两个类的下一个代码 public class Object public int ObjectID get set public int Object2ID get set public virtual Object2 Object2
  • MediaButtonIntentReceiver 在 Android 4.0+ 中不工作

    目标是拦截来自耳机以及蓝牙的广播 以响应来自耳机的不同类型的点击来改变媒体播放器 该解决方案适用于 ICS 之前的所有版本 这是我尝试过的一些代码和事情 private BroadcastReceiver mediaButtonReceiv
  • Wicket、页面堆栈和内存使用情况

    Wicket 应用程序序列化并缓存所有页面以支持有状态组件 以及支持后退按钮 以及其他可能的原因 我有一个使用 setResponsePage 在屏幕之间导航的应用程序 在很短的时间内 会话就会变得相当大 因为所有先前的页面都存储在会话中
  • 如何在 IIS 7.5 中启用 GZIP 压缩

    我想使用 GZIP 压缩我的文件 您能分享一下使用 GZIP 压缩文件的 web config 代码吗 上传 web config 文件后还需要做什么吗 GZip 压缩可以直接通过 IIS 启用 首先 打开IIS 转到您希望调整的网站并点击
  • 在 Docker 中使用私有模块构建 Go 应用程序

    我正在尝试在依赖于私有子模块的 docker 容器中构建一个 go 项目 我本来希望 mount type ssh会将我的 ssh 凭据传递给容器并且它会起作用 目前我可以在本地构建 只需制作GOPRIVATE变量集和git config
  • 从代码中获取全局色调颜色

    有没有办法通过代码从我的项目中获取全局色调颜色 为了避免误解 我指的是全局色调 我可以在文件检查器中设置它 Easy 目标C UIColor tintColor self view tintColor Swift let tintColor
  • 根据其他数据框的函数创建新的数据框

    我是 R 的新手 所以我可能很难提出我的问题 请多多包涵 我有两个数据框 为了解释起见 我们假设 df1 柱形代表收益类型 玉米 燕麦 小麦等 行代表一年中的月份 一月 二月等 Elements 代表在该特定月份购买的增益类型的每吨价格 d