Stataには、プロジェクトで一緒に働いた人々のこのデータがあります。各行はプロジェクトであり、person_1からperson_20までの列があり、名前がその列にある場合、その人がその行でそのプロジェクトに取り組んだことを意味します。グループは1人、2人、...、20人にすることができます。可能性ごとにバイナリ変数(yes = 1)があります:グループ1(G1)、G2、...、G11。次に、このコードを使用してグループ化を行いました(例として4人のグループを使用)。
project_group = person_1 + "/" + person_2 + "/" + person_3 + "/" + person_4 if G4 == 1
This yields: Tom/Joe/Mike/Sally
私は3つの質問があります:1)グループ化を行うためのより効率的な方法はありますか?たとえば、プロジェクト全体(行)を調べ、そこにいる人の数(空でないフィールドの数)を数え、「/」で区切られた各人の名前である一意のグループ名を作成するコード。作成したコードは問題ありませんが、データセットのサイズが変更されるため、より効率的なコードがおそらく最適です。
2)私の例から、Joe / Tom / Mike/SallyまたはSally/Joe / Mike/Timeを同じグループとしてどのように扱うことができますか。サイズに関係なく、すべてのグループが各人をアルファベット順にリストすることをお勧めします。私の例では、実際の順列に関係なく、リストはJoe / Mike / Sally/Tomになります。
3)最初の人に基づいてグループを一意にするにはどうすればよいですか(プロジェクトリーダーの場合は、リストされている名です)。したがって、Joe / Tom/MikeとJoe/Mike / Tomは同じグループですが、Tom / Joe/MikeとMike/Tom/Joeは同じグループではありません。
ヘルプと提案をありがとう