使用 if 语句子集化字符串变量中的值

Subsetting a value in a string variable using if statement

我有以下数据集,其中 subj_id 代表参与者,trial_type 代表它是练习试验还是实际实验试验(即测试),以及我的因变量表示为 DV.

我需要编写一个 if 语句,其中我只想包括练习 3 DV 大于练习 4 DV 的参与者(即 subj_id)。因此,添加另一列,例如 'include',其中参与者 1 的值应为 1,表示应将其保留在进一步处理中,而参与者 2 的值应为 0,表示不应保留它们。

我知道如何对 trial_type > 60 等内容进行子集化,但我不知道如何使用 if 语句对列中的值进行子集化。

subj_id trial_type DV
1 Practice1 67
1 Practice2 3
1 Practice3 78
1 Practice4 14
1 Test 97
1 Test 65
1 Test 28
1 Test 16
1 Test 97
1 Test 35
2 Practice1 100
2 Practice2 99
2 Practice3 99
2 Practice4 100
2 Test 29
2 Test 18
2 Test 33
2 Test 46
2 Test 87
2 Test 95
library(tidyverse)

示例数据

 df <-
    tibble::tribble(
      ~subj_id, ~trial_type,  ~DV,
            1L, "Practice1",  67L,
            1L, "Practice2",   3L,
            1L, "Practice3",  78L,
            1L, "Practice4",  14L,
            1L,      "Test",  97L,
            1L,      "Test",  65L,
            1L,      "Test",  28L,
            1L,      "Test",  16L,
            1L,      "Test",  97L,
            1L,      "Test",  35L,
            2L, "Practice1", 100L,
            2L, "Practice2",  99L,
            2L, "Practice3",  99L,
            2L, "Practice4", 100L,
            2L,      "Test",  29L,
            2L,      "Test",  18L,
            2L,      "Test",  33L,
            2L,      "Test",  46L,
            2L,      "Test",  87L,
            2L,      "Test",  95L
      )

创建变量包含

df %>% 
  #Grouping by subject
  group_by(subj_id) %>% 
  #Create a new variable: DV practice 3 > DV practice 4, by subject
  mutate(
    include = if_else(DV[trial_type == "Practice3"] > DV[trial_type == "Practice4"],1,0)
    )