matlab - 使用特定数据构建表
问题描述
我需要一些帮助来完成我的任务:
我有 4 个带有数据的向量:其中 3 个带有日期,第 4 个带有过期天数,如下所示:
dateAdded dueDate date overdue
Published
02/11/18 02/11/18 03/11/18 1
03/11/18 04/11/18 11/11/18 7
03/11/18 04/11/18 04/12/18 30
04/11/18 05/11/18 ongoing overdue up to today
考虑到当我从一个月过渡到另一个月时,我必须计算两个月的逾期,你能给我一些提示吗?此外,当 datePublished 尚未到来时,我必须计算每个月过去的逾期日期。
谢谢
解决方案
我的解决方案:
number_months = max(((year(dateAdded)-2018))*12 + rem(month(dateAdded),13));
idx = 1;
ii=1;
for k=1:number_months
kpit(k,1) = k;
kpit(k,2) = 0;
kpit(k,3) = 0;
end
for i=1:data_length_Added
% if month(dateAdded(i)) == month(dueDate(i)) && month(dateAdded(i)) ~= 0
if month(dueDate(i)) == month(datePublished(i)) && month(dateAdded(i)) ~= 0
[~,idx]=ismember(month(dueDate(i)),kpit(:,1),'rows');% finds the position of an element from the array in the array for months
kpit(idx,2) =kpit(idx,2) + overdue(i);
kpit(idx,3) = kpit(idx,3) + 1;
idx = idx + 1;
else if month(datePublished(i)) == month(dueDate(i)) + 1
[~,idx]=ismember(month(dueDate(i)),kpit(:,1),'rows');
[~,idx1]=ismember(month(datePublished(i)),kpit(:,1),'rows');
year1 = year(datePublished(i));
weight = (day(datePublished(i)))/eomday(year1,month(datePublished(i)));
kpit(idx,2) =kpit(idx,2) + overdue(i);
kpit(idx1,2) =kpit(idx1,2) + overdue(i)*weight;
kpit(idx,3) = kpit(idx,3)+ 1;
kpit(idx1,3) = kpit(idx1,3)+ 1;
if (month(datePublished(i)) ~= 0 && month(datePublished(i)) > month(dueDate(i))+1)
% if (datePublished > dueDate)% If the correction is done check every month if it is the next one
[~,idx]=ismember(month(datePublished(i)),kpit(:,1),'rows');
year1 = year(datePublished(i));
weight = day(datePublished(i))/eomday(year1,month(datePublished(i))); %Should count all overdue days for full months and weighted overdue dats for not full months
kpit(idx,2) = overdue(i)*weight;
kpit(idx,3) = kpit(idx,3) + 1;
for j=(month(datePublished(i))-1):month(dueDate(i))
[~,idx]=ismember(month(datePublished(j)),kpit(:,1),'rows');
kpit(idx,2) =kpit(idx,2) + overdue(j);
kpit(idx,3) = kpit(idx,3)+ 1;
j = j +1;
end
end
end
end
else if month(dueDate(i)) == 0
[~,idx]=ismember(month(today),kpit(:,1),'rows');
year1 = year(today);
weight = day(today)/eomday(year1,month(today)); %Should count all overdue days for full months and weighted overdue dats for not full months
kpit(idx,2) = overdue(i)*weight;
kpit(idx,3) = kpit(idx,3) + 1;
for j=(month(today)-1):month(dueDate(i))
[~,idx]=ismember(month(today),kpit(:,1),'rows');
kpit(idx,2) =kpit(idx,2) + overdue(j);
kpit(idx,3) = kpit(idx,3)+ 1;
j = j +1;
end
end
end
推荐阅读
- python - Linux或window都是一样的 :p -> HttpException('无效的HTTP请求形式(预期:权威或绝对,得到:相对)')
- jquery - 使用 ASP.NET Core 剃须刀页面从数据库中为 jQuery 数组动态分配值
- reactjs - 失败的道具类型:必须在容器上使用 Grid 的道具 justify
- android - 如何使用动画旋转图层列表中的项目?
- sql - SQL Server 代理作业不执行 SSIS 包权限错误
- python-3.x - Colab 中 CPU、GPU 和 TPU 使用的运行时间没有差异
- arrays - 如何找到 MIPS 中的第二个最小值?
- iis-7.5 - 服务器 2008 r2 上 IIS 上的 Verdaccio
- python - 在 Python 中将字符串标记转换为树(斯坦福 NLP)
- python - Django Http404 消息未显示