小鳄鱼a 发表于 2016-10-27 19:04 
非常感谢pobel大神的帮助,十分荣幸,如果有时间能加一些注释就更好了,或者简单说一下写程序的思路
大致思路是这样:
先以第一行作为起始点,寻找与第一行是一组的记录。
grp记录当前查找的这个组里遇到的id值。
members记录的是都有哪一行属于这个组。
searched记录的是已经找到“分组”的那些行,之后可以直接跳过那些行。
1. 从第二行到最后一行,依次检测是不是符合“同组条件”。如果某一行符合,那么
a. 如果这一行有新的id值,那么就添加到grp的值里。
b. 将这一行的行数(数据集的第几行)添加到members变量
2. 然后开始第二轮查找,这次只会查找第一轮查找“剩下”的记录。
3. 有可能会需要第三轮甚至更多次查找。
直到某一轮没有找到同组的记录,说明这一个分组完成了。把属于这一组(group变量值)的记录行数输出。
接下来,回到数据集,找到一个还没有被分组的变量。重置members,grp变量。重新开始新的一组查找。
直到所有记录都分组完成。