这是我的代码:
data INDAT8; set INDAT6;
Array myarray{24,27};
goodgroups=0;
do i=2 to 24 by 2;
do j=2 to 27;
if myarray[i,j] gt 1 then myarray[i+1,j] = 'bad';
else if myarray[i,j] eq 1 and myarray[i+1,j] = 1 then myarray[i+1,j]= 'good';
end;
end;
run;
proc print data = INDAT8; 运行;
问题:
我有这种格式的数据 - 这只是一个例子:n = 2 X Y信息
2 1 good
2 4 bad
3 2 good
4 1 bad
4 4 good
6 2 good
6 3 good
现在,上述数据按排序方式(共7行)。我需要分别创建一组2,3或4行并生成图表。在上面的数据中,我做了一组2行。由于第3行中没有其他列形成组,因此第三行保持不变。组只能在同一行内形成。不与其他行。
现在,我将检查两行是否在信息列中都有“好”。如果两行都“好” - 形成的组也很好,否则很糟糕。在上面的例子中,第3个/最后一个组是“好”组。休息都是坏组。一旦我完成所有行,我将计算总数。成立的良好团体/总数没有。小组。
在上面的例子中,输出将是:Total no。好团体/总数没有。 of groups =>三分之一。
这是n = 2(组的大小)的情况
现在,对于n = 3,我们组成3行,对于n = 4,我们组成4行,并以类似的方式找到好/坏组。如果组中的所有行都有“好”块 - 结果是好块,否则坏。
Example: n= 3
2 1 good
2 4 bad
2 6 good
3 2 good
4 1 good
4 4 good
4 6 good
6 2 good
6 3 good
在上面的例子中,我留下了第4行和最后2行,因为我不能用它们组成3行。第一组结果为“差”,最后一组结果为“好” 输出:1/2
For n= 4:
2 1 good
2 4 good
2 6 good
2 7 good
3 2 good
4 1 good
4 4 good
4 6 good
6 2 good
6 3 good
6 4 good
6 5 good
在这种情况下,我组成一组4并找到结果。第5,第6,第7,第8行被遗忘或被忽略。我制作了2组4行,两者都是“好”的块。 输出:2/2
因此,在从n = 2,n-3和n = 4获得3个输出值之后,我将绘制这些值的图表。
如果您可以使用数组帮助任何语言,if和do循环。这会很棒。
我可以相应地更改我的代码。
更新:
对此的答案不一定是sas。由于它与算法相关的更多,我会接受任何语言的建议,只要它们显示如何使用数组和do
来实现这一点。
答案 0 :(得分:0)
我无法理解您的问题陈述,但我可以从此处收集的内容是我的建议:
将数据放入箱柜,处理汇总数据。
实施1
假设:您不知道第一列的范围是什么,或者解析将是稀疏的
实施2
假设:你知道第一列的范围和分布是相当密集的
您可以使用相同的方法收集好的和坏的数量。