【发布时间】:2019-12-08 21:19:54
【问题描述】:
有一个向量和一个数据框。向量是记录受访者对调查的反应的原始数据(他们必须从三个中选择一个),因此它表示从 1 到 3。数据框是组织第一个 d.f. 的结果。我需要的是从每个 Trial 的向量中拖动结果,并在 d.f 中用新列“选择”表示。
我将在 d.f. 中创建一个新列“选择”。对于每个试验,受访者选择的备选方案在“选择”列中为 1,否则为 0。我首先需要找到与 d.f$trial 匹配的所选值,该值与向量中列名“conjoint_full_info”之后的数字相匹配。找到值后,我需要在“选择”列中用“1”以及相应的替代行来表示。 (通过查看向量,在试验 1 中,受访者选择了备选方案 1。因此,在所选列中指示“1”以及备选列 = 1 行。其余 2 行带有“0”)我正在寻找方法适用于下面的每个集合,但我不确定如何以有效的方式编写代码。也许使用 for 循环?抱歉解释不清楚,提前感谢!
这两个数据集是这样的
Vector
conjoint_full_info.1. conjoint_full_info.2. conjoint_full_info.3. conjoint_full_info.4.
1 2 2 2
d.f
Ind Trial alternative price privacy battery stars
1 R_2Xb32PAT3WjGBnc 1 1 2 3 1 1
2 R_2Xb32PAT3WjGBnc 1 2 3 1 2 2
3 R_2Xb32PAT3WjGBnc 1 3 1 2 3 3
4 R_2Xb32PAT3WjGBnc 2 1 1 2 2 1
5 R_2Xb32PAT3WjGBnc 2 2 2 3 3 2
6 R_2Xb32PAT3WjGBnc 2 3 3 1 1 3
7 R_2Xb32PAT3WjGBnc 3 1 3 1 3 1
8 R_2Xb32PAT3WjGBnc 3 2 1 2 1 2
9 R_2Xb32PAT3WjGBnc 3 3 2 3 2 3
10 R_2Xb32PAT3WjGBnc 4 1 1 1 1 2
11 R_2Xb32PAT3WjGBnc 4 2 2 2 2 3
12 R_2Xb32PAT3WjGBnc 4 3 3 3 3 1
and this is what I want
d.f
Ind Trial alternative price privacy battery stars chosen
1 R_2Xb32PAT3WjGBnc 1 1 2 3 1 1 1
2 R_2Xb32PAT3WjGBnc 1 2 3 1 2 2 0
3 R_2Xb32PAT3WjGBnc 1 3 1 2 3 3 0
4 R_2Xb32PAT3WjGBnc 2 1 1 2 2 1 0
5 R_2Xb32PAT3WjGBnc 2 2 2 3 3 2 1
6 R_2Xb32PAT3WjGBnc 2 3 3 1 1 3 0
7 R_2Xb32PAT3WjGBnc 3 1 3 1 3 1 0
8 R_2Xb32PAT3WjGBnc 3 2 1 2 1 2 1
9 R_2Xb32PAT3WjGBnc 3 3 2 3 2 3 0
10 R_2Xb32PAT3WjGBnc 4 1 1 1 1 2 1
11 R_2Xb32PAT3WjGBnc 4 2 2 2 2 3 0
12 R_2Xb32PAT3WjGBnc 4 3 3 3 3 1 0
【问题讨论】:
-
不明白vector和table的关系。
-
@SimonWoodward 数字紧跟在每个向量列名称之后,conjoint_full_info 应该与 d.f$Trial 匹配。一旦我找到相应的数字(在这种情况下,试验 1 的受访者选择了 1,我可以从向量中看到这一点,在试验 1 部分的第一行中显示“1”。就像我在上面的表格中指出的那样)跨度>
-
所以每个向量都针对特定的 Ind,您想知道他们选择了哪个替代方案?建议您将向量绑定到包含 Ind、Trial 和选择的列的数据框中。然后你可以使用连接函数和变异。
标签: r