使用 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)
)
我有以下数据集,其中 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)
)