cjoint パッケージを使用することを期待して、コンジョイントの設計調査を行いました。cjoint パッケージのサンプル データは次のようにフォーマットされます。
head(model)
CaseID contest_no FeatEd FeatJob
1 4 1 high school Nurse
2 4 1 no formal Child care provider
3 4 2 graduate degree Gardener
4 4 2 4th grade Construction worker
5 4 3 high school Nurse
6 4 3 college degree Child care provider
FeatLang Chosen_Immigrant
1 tried English but unable Yes
2 used interpreter No
3 fluent English No
4 fluent English Yes
5 broken English Yes
6 fluent English No
「Case ID」は各回答者を表し、「contest_no」は各回答者が完了する個々のタスクを表します。この場合、各回答者は 5 つのタスク (タスク 1 から 3 を表示) を完了し、各タスクは 2 つのプロファイルを比較しています。各プロファイルは、属性「FeatEd」、「Featjob」、「FeatLang」によって異なります。選択したプロファイルは「Chosen_Immigrant」としてリストされ、はいまたはいいえのインジケーターが付きます。
私の現在のデータは次のとおりです。
- 回答者によって折りたたまれました。同じ行のすべてのタスク、プロファイル、および属性。
- 各行内の属性によってランダム化されます。
例えば:
has[1:3,12:16]
F.1.1
1 Affordability
2 Community Support
3 Height
F.1.1.1
1 Affordable units will be built off-site, elsewhere in the city.
2 Most people in the community support it.
3 3 stories
F.1.2 F.1.1.2 F.1.3
1 Party Support Local Republican Party supports it. Community Support
2 Parking All residents will park on the street. Affordability
3 Location In your neighborhood Affordability
F.1.1 は、タスク 1 の属性タイトルを表します。F.1.1.1 は、プロファイル 1 のタスク 1 の属性値です。F.1.2.1 (表示されていません) は、プロファイル 2 のタスク 1 の属性値です。F. 1.2. は、タスク 1、属性 2 のタイトルです。F.1.1.2 は、プロファイル 1 のタスク 2 の属性値です。以下同様...
私が理解しているように、データ フレームを cjoin の例のデータ フレームと一致させるには、次のことを行う必要があります。
- 属性の定義された順序で各行を並べ替えます。例: c("手頃な価格", "パーティー サポート",...)
- 行内の各属性の位置を使用して、各プロファイルに提供される関連レベルを取得します。F.1.1 の場合。「手頃な価格」、F.1.1.1 と F.1.2.1 の比較をつかみます。行ごとに並べてグループ化します。
- 行 ID が回答者とタスクによって実行され、列名が属性になり、セルが属性レベルを表すように、データ フレームをワイドからロングに変更します。
ステップ 3 は、reshape2 または tidyr のいずれかで解決できると思います。ただし、セル値を指定して行内の列でソートし、行内の関連する他のセルを取得することについての助けは、非常に高く評価されます。