for i=1:123 %针对2017年数据根据完整年份数据补齐 p=intersect(find(month(:,2)==2017),find(month(:,1)==i)); n=intersect(find(Year(:,2)==2018),find(Year(:,1)==i)); N=intersect(find(Year(:,2)==2017),find(Year(:,1)==i)); p0=intersect(find(month(:,2)==2016),find(month(:,1)==i)); P=intersect(find(month(:,2)==2018),find(month(:,1)==i)); if isempty(p0)%检查是否有2016年数据 else continue; end if isempty(p)%如果2017年整年是否缺失,如果是则修改为修正2018年数据 p=intersect(find(month(:,2)==2018),find(month(:,1)==i)); N=intersect(find(Year(:,2)==2018),find(Year(:,1)==i)); n=intersect(find(Year(:,2)==2019),find(Year(:,1)==i)); P=intersect(find(month(:,2)==2019),find(month(:,1)==i)); P=P(month(P,3)>=min(month(p,3))); end P=P(month(P,3)>=min(month(p,3))); if month(p(1),3)==1%判断2017年数据是否完整 continue; end为什么会出现空的p向量
时间: 2024-04-18 21:24:01 浏览: 165
7张图总结:SQL 数据分析常用语句.pdf
空的p向量可能出现的原因有两种情况:
1. 2017年整年数据确实缺失:在代码中,如果p向量为空,说明无法找到2017年对应月份的数据。这可能是因为输入数据中确实缺少了2017年某些月份的数据。在这种情况下,代码会继续执行后面的修正操作。
2. 数据筛选条件未满足:在代码中,通过intersect和find函数来筛选符合条件的数据。如果筛选条件没有满足,可能导致p向量为空。你可以检查一下筛选条件是否正确,确保month和Year矩阵中有符合2017年和对应月份的数据。
需要注意的是,在代码中有一段逻辑是如果p0向量不为空,则直接continue跳过后续操作。所以如果p0不为空,即找到了2016年对应月份的数据,那么就会跳过后续的修正操作。这也可能是导致p向量为空的原因之一。
阅读全文