c# - 随时间变化的数据聚合

标签 c# aggregation modulo

我正在开发一个应用程序,用于计算在指定时间段 (Term) 内获得的产品共享。

计算完成后,我有必要根据预定义的审查期限将数据汇总到组中(例如,如果获得 100% 产品所有权所需的时间是 25 年,审查期限值为 5 年,我将为该协议(protocol)提供 5 组数据聚合)。

我通过遍历我的计算结果集来执行聚合,如图所示:

if (Year% ReviewPeriod == 0)
            {
                // Perform Aggregations
            }

这在大多数情况下都能正常工作。 然而,我确实有很多情况,产品在期限结束前达到 100% 的所有权。

我需要能够做的是聚合基于 ReviewPeriod 变量执行的计算,但如果计算中的最终值数不等于审查期,则根据剩余的项目数聚合项目.

例如,给定一个 22 年的任期,数据将根据 Review Period 变量进行汇总,但是如果有余数,则应根据余数的值对余数进行汇总。

实例

第 0 - 5 = 5 年的聚合

6 年级 - 10 年级 = 5 次聚合

11 - 15 年级 = 5 次聚合

16 - 20 年 = 5 次聚合

21 - 22 年 = 2 次聚合

谁能帮我理解聚合数据的逻辑,正如我所描述的那样。

最佳答案

可能最简单的方法是这样的:

for ( int year = 0; year <= max_year; year++ ) {
    if ( year % reviewPeriod == 0 ) {
        // start a new aggregation
    }
    // add year to current aggregation
}

您可以保留一个聚合列表,并在每个周期开始时添加一个新列表。

这是一个工作示例,它只是将年份分组在列表中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Aggregations
{
    class Program
    {
        static void Main(string[] args)
        {
            int maxYear = 22;
            int period = 5;
            int year = 1985;

            List<List<int>> aggregations = new List<List<int>>();
            int i = -1;
            for (int y = 0; y <= maxYear; y++)
            {
                if (y % period == 0)
                {
                    aggregations.Add(new List<int>());
                    i++;
                }
                aggregations.ElementAt(i).Add(year);
                year++;
            }
            foreach ( List<int> l in aggregations )
            {
                foreach (int yy in l)
                {
                    Console.Write(yy + " ");
                }
                Console.WriteLine();
            }
        }
    }
}

关于c# - 随时间变化的数据聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402411/

相关文章:

elasticsearch - Elasticsearch直方图聚合中的时区不正确

hash - 如何为整数或字符串哈希选择模数?

math - 负数的模数

iphone - 如何在objective-c/cocoa touch中进行模运算?

C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

c# - 标记通过网站发送的诈骗电子邮件的算法

c# - 禁用自动生成的代码/文件夹/命名空间的警告

MYSQL算算算不算?

c# - 将 TypeScript 编译器加载到 ClearScript, "WScript is undefined",不可能的任务?

mysql - 我可以用其他临时表创建一个临时表吗