【问题标题】:Sum values from dataframe considering two column interval考虑两列间隔的数据帧的总和值
【发布时间】:2021-03-24 23:14:48
【问题描述】:

考虑间隔和重叠,想要对两列中的值求和。

示例:

df = data.frame(A = c(1, 1, 2), B = c(1, 600, 600), C = c(0.02, 0.03, 0.01))

总结规则:

对于每一列(A 和 B),联合对应于单个区间的索引值。我需要求和以创建用于执行财务预测/估值的向量。最后,我想检索包含的重叠

例如:

1 到 600 - 0.03
2 到 600 - 0.01

从值 2 到 600 我还包括区间 1 到 600,所以我需要考虑这种重叠。

总和的预期输出:

### 1 - 0.05
### 2 - 0.04
### 600 - 0.04

我想现在我可以解释一切了:

【问题讨论】:

  • 我不明白你的预期输出和底层逻辑。怎么有一行2 - 0.04?我已经在下面发布了我认为您所要求的答案的尝试。
  • 嗯。我觉得我们俩都不了解对方。在你手写笔记的截图中,第 2 点和第 3 点有什么区别?他们不是都在讨论“2-600”和“1-600”重叠吗?为什么它们是重复的?注释也没有解释2 - 0.04 的预期输出。数字2代表什么?为什么1-1(不管是什么)和1-600的0.05重叠被记录在1的值下。这里的 1 表示什么?
  • 将每一行视为固定收益债券。 A 栏(初始学期)和 B 栏(最终学期)以月为单位。归根结底,我需要统一考虑总和总结的所有时间间隔。正如我之前解释的,区间 2 - 600 它与 1- 600 相交,因此我需要将区间 2 - 600 中应用的速率添加到区间 1 - 600 中,这在任何情况下都适用。我需要估算这些综合利率,以生成大量折扣率向量,以应用于我的投资组合的每个月
  • 感谢 Matheus 的澄清,但您并没有真正回答我的问题。 (1) 在2 - 0.04(您的预期输出)中,2 表示什么? (2) 为什么你的手写笔记中有两个重复的“计算”? (3)为什么1-11-600的重叠部分会存储在1的值下?
  • 这是因为它始终设法存储时间间隔和相关利率,整合投资组合中的所有资产。因此,对于 1 个月,我必须包括从第一期开始的两个利率的总和。对于 2 个月,我需要考虑 2 - 600 期间和 1 - 600 范围内的费率,算法包括 2 - 600 期间的交集,所以在 2 个月内直到结束,我必须通过这些总和来合并总结率。从而产生 2 - 0.04

标签: r dplyr tidyverse data-manipulation


【解决方案1】:

您让我们猜测重现预期输出的规则是什么。

我无法重现您的输出,但这是您所追求的吗?

library(dplyr)
library(tidyr)
df %>% 
    pivot_longer(-C, values_to = "id") %>% 
    select(-name) %>% 
    group_by(id) %>% 
    summarise(value = sum(C))
## A tibble: 3 x 2
#     id value
#  <dbl> <dbl>
#1     1  0.07
#2     2  0.01
#3   600  0.04

【讨论】:

  • @MatheusMonteiro 正如我在上面的评论中所写,我不明白你的“总结”背后的逻辑。对于 2 的值,如何获得 0.04 的值。第一个值和第二个值表示什么?你能引导我完成每个值的计算吗?请编辑您的原始帖子(cmets 是临时的)并将这些详细信息包含在主帖子中。
  • 谢谢莫里茨!它很接近,但问题是优化总和。应用总和的规则是:对于每一列(A 和 B),联合对应于单个区间的索引值。我需要求和以创建用于执行财务预测/估值的向量。所以,最后,我想检索重叠,例如: 1 到 600 - 0.03 2 到 600 - 0.01 从值 2 到 600 我还包括区间 1 到 600,所以我需要总结考虑这种重叠。我有执行矩阵分配的脚本
  • 但是时间太长了,我什至想把它传递给rcpp,但我想有一些方法可以让这个总结更有效率
  • 嗨@MatheusMonteiro。我已经检查了您的编辑,但这对我来说仍然不清楚。在您的编辑中,您主要是在散文中重复您已经在代码中作为示例数据给出的内容。它没有回答您如何计算这些“总和”。为什么 2 -> 0.04 的值?为什么值为 1 -> 0.05?我不知道您所说的“最佳优化”是什么意思;我看不到任何优化问题。
  • [续] 从您的帖子中:“对于每一列(A 和 B),联合对应于一个单独间隔的索引值。我需要求和以创建我将用于执行财务预测/估值。最后,我想检索包含的重叠部分“对不起,我不知道你在说什么。同样,如果您能明确地引导我们完成计算,那将真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多