【发布时间】:2019-05-14 08:06:30
【问题描述】:
假设受访者 (id) 被要求做出二元(离散)选择,在五个任务 (t=1,2,3,4,5) 中选择 1 或 2(每个受访者有五个观察值的面板数据集)。
如果受访者选择选项 1,则结果是一个固定值(假设总是 30),但如果受访者选择选项 2,则结果是不同的,取决于受访者所接受的治疗(只有一个每个受访者的治疗,因为受访者仅被随机分配到一种治疗)。假设有四种治疗(一个向量),并且在每种治疗中,如果选择了选项 2,则有五个结果。
也就是说,
treat1= 1,2,3,4,5
treat2= 6,7,8,9,10
treat3= 11,12,13,14,15
treat4= 16,17,18,19,20
例如,在 treat1 的情况下,如果第一个任务中的受访者选择选项 2,则结果等于 1。在第二个任务中,受访者选择选项 1,则结果是30(一如既往)。在第三个任务中,如果受访者选择选项 2,则结果为 2(而不是 3)。即如果第一次在treat1中选择了选项2,则从treat1序列中选择第一个值;如果在treat1 中第二次选择了选项2,则从treat 2 序列中选择第二个值,依此类推。
结果如下所示。
+----+---+-----------+--------+---------+
| id | t | treatment | choice | outcome |
+----+---+-----------+--------+---------+
| 1 | 1 | 1 | 2 | 1 |
| 1 | 2 | 1 | 1 | 30 |
| 1 | 3 | 1 | 2 | 2 |
| 1 | 4 | 1 | 1 | 30 |
| 1 | 5 | 1 | 2 | 3 |
| 2 | 1 | 3 | 1 | 30 |
| 2 | 2 | 3 | 2 | 11 |
| 2 | 3 | 3 | 2 | 12 |
| 2 | 4 | 3 | 1 | 30 |
| 2 | 5 | 3 | 2 | 13 |
| 3 | 1 | 2 | 2 | 6 |
| 3 | 2 | 2 | 1 | 30 |
| 3 | 3 | 2 | 1 | 30 |
| 3 | 4 | 2 | 1 | 30 |
| 3 | 5 | 2 | 2 | 7 |
| 4 | 1 | 4 | 1 | 30 |
| 4 | 2 | 4 | 1 | 30 |
| 4 | 3 | 4 | 1 | 30 |
| 4 | 4 | 4 | 2 | 16 |
| 4 | 5 | 4 | 1 | 30 |
| 5 | 1 | 2 | 1 | 30 |
| 5 | 2 | 2 | 1 | 30 |
| 5 | 3 | 2 | 1 | 30 |
| 5 | 4 | 2 | 1 | 30 |
| 5 | 5 | 2 | 2 | 6 |
| . | . | . | . | . |
| . | . | . | . | . |
| . | . | . | . | . |
| . | . | . | . | . |
| . | . | . | . | . |
+----+---+-----------+--------+---------+
由于我的数据有数千个观察值,我想知道什么是生成变量结果的有效方法。
id、t、treatment 和 choice 变量在我的数据集中可用。
任何想法将不胜感激。谢谢。
【问题讨论】:
-
要正确回答您的问题,我们需要更多详细信息。您能否更新数据并显示
id == 2的预期结果?treatment会一直为 1 吗?等 -
@markus,感谢您的评论。我已经更新了预期的结果。治疗并不总是 1。它可能是 1 或 2 或 3 或 4。并且受访者只会被分配到四种治疗中的一种。
-
@NelsonGon,我已经检查了您提到的问题,但我相信我的问题与此完全不同。也许,我可能是错的。
-
已撤回。由于没有样本数据,目前尚不清楚。我的错!请使用
dput提供样本数据。 -
@NelsonGon,我掌握了 dput。 @thothal 使用以下代码
set.seed(1) treat_lkp <- list(trt1 = 1:5, trt2 = 6:10, trt3 = 11:15, trt4 = 16:20) d_in <- expand.grid(task = 1:5, id = 1:5) d_in$treatment <- paste0("trt", d_in$id %% 4 + 1) d_in$choice <- sample(2, NROW(d_in), TRUE)生成了示例数据
标签: r dplyr data.table