【发布时间】:2019-02-20 13:18:45
【问题描述】:
如何使用 dplyr 比较依赖于另一个变量的变量中的值?
df 基于来自调查的选择数据(长格式)。它有一个变量表示参与者id,另一个表示选择instance,还有一个表示选择了哪个alternative。 在我的数据中,我感觉很多人倾向于对这项任务感到厌倦,因此在每种情况下都坚持使用一种替代方案。因此,我想找出从某个实例开始到最后总是选择相同选项的人。
这里是一个例子 df:
set.seed(0)
df <- tibble(
id = rep(1:5,each=12),
inst = rep(1:12,5),
alt = sample(1:3, size =60, replace=T),
)
如下所示:
id inst alt
1 1 1 3
2 1 2 1
3 1 3 2
4 1 4 2
5 1 5 3
6 1 6 1
7 1 7 3
8 1 8 3
9 1 9 2
10 1 10 2
11 1 11 1 <-
12 1 12 1 <-
13 2 1 1
14 2 2 3
...
我想创建两个新变量 count 和 count_alt。新变量 count 应该根据 id 和 inst 指示相同值在 alt 中出现的频率,仅计数id 末尾的值。因此,对于参与者 (id==1),count 变量应该是 2,因为在最后两个实例(11 和 12)中选择了替代 1。 count_alt 将取值 1(始终与 inst == 12 相同)
新的 df 应该如下所示
id inst alt count count_alt
1 1 1 3 2 1
2 1 2 1 2 1
3 1 3 2 2 1
4 1 4 2 2 1
5 1 5 3 2 1
6 1 6 1 2 1
7 1 7 3 2 1
8 1 8 3 2 1
9 1 9 2 2 1
10 1 10 2 2 1
11 1 11 1 2 1
12 1 12 1 2 1
...
我更愿意使用 dplyr 而不是循环来解决这个问题,因为我想将它配合到进一步的数据处理步骤中。
【问题讨论】: