【问题标题】:Subsetting a value in a string variable using if statement使用 if 语句对字符串变量中的值进行子集化
【发布时间】:2021-10-29 07:18:36
【问题描述】:

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

我需要编写一个 if 语句,其中我只想包含练习 3 DV 大于练习 4 DV 的参与者(即 subj_id)。因此,添加另一列,例如“包含”,其中参与者 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

【问题讨论】:

    标签: r dplyr tidyverse data-transform


    【解决方案1】:
    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)
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2020-11-17
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多