如何用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而不是循环来解决这个问题,因为我想把它放到进一步的数据处理步骤中。
1条答案
按热度按时间fnvucqvd1#
看看这样能不能解决问题:
输出: