对于每个参与者和每个试验,我需要检查CURRENT_ID中所有连续的行,第一行在A列中的值为0,最后一行在B列中的值为0。条件满足,我希望新列C中的值为0,否则,我希望值为1。
如果您有任何建议,我将不胜感激。
这是数据的一些示例行:
head(mydf, 10)
#> # A tibble: 10 x 6
#> A B participant trial CURRENT_ID C
#> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
#> 1 0 1 ppt01 45 3 0
#> 2 1 0 ppt01 45 4 0
#> 3 0 1 ppt01 45 10 0
#> 4 0 0 ppt01 45 11 0
#> 5 1 0 ppt01 45 12 0
#> 6 0 1 ppt01 87 2 0
#> 7 1 0 ppt01 87 3 0
#> 8 1 1 ppt01 87 4 1
#> 9 1 1 ppt01 87 5 1
#> 10 0 1 ppt01 34 6 0
我需要为每个参与者和试验考虑每对连续的行(基于CURRENT_ID的值连续)。在上面的示例中,第8行和第9行在新列C中的值为1,因为第8行在A列中的值为1(而不是0),而第9行在B列中的值为1(而不是0)。] >
这里有一个示例,如何比较参与者ppt01和试验87的行
A B participant trial CURRENT_ID C 0 1 ppt01 87 2 0 1 0 ppt01 87 3 0 1 0 ppt01 87 3 0 1 1 ppt01 87 4 1 1 1 ppt01 87 4 1 1 1 ppt01 87 5 1
数据:
mydf <- structure(list(A = c(0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0,
1, 1), B = c(1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1
), participant = c("ppt01", "ppt01", "ppt01", "ppt01", "ppt01",
"ppt01", "ppt01", "ppt01", "ppt01", "ppt01", "ppt01", "ppt01",
"ppt01", "ppt01", "ppt01", "ppt01", "ppt01", "ppt01", "ppt01",
"ppt01", "ppt01", "ppt02", "ppt02", "ppt02", "ppt02", "ppt02",
"ppt02", "ppt02", "ppt02", "ppt02", "ppt02", "ppt02", "ppt02",
"ppt02", "ppt02", "ppt02", "ppt02"), trial = c(45, 45, 45, 45,
45, 87, 87, 87, 87, 34, 34, 34, 34, 34, 34, 8, 8, 8, 8, 8, 8,
87, 87, 87, 87, 55, 55, 55, 55, 55, 55, 22, 22, 22, 22, 22, 22
), CURRENT_ID = c(3, 4, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 5, 6, 9, 10, 11, 12, 2, 3, 4, 5, 5, 6, 9, 10, 11, 12, 2,
3, 4, 10, 11, 12), C = c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 1, 1)), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -37L), spec = structure(list(cols = list(
A = structure(list(), class = c("collector_double", "collector"
)), B = structure(list(), class = c("collector_double", "collector"
)), participant = structure(list(), class = c("collector_character",
"collector")), trial = structure(list(), class = c("collector_double",
"collector")), CURRENT_ID = structure(list(), class = c("collector_double",
"collector")), C = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
对于每个参与者和每个试验,我需要检查CURRENT_ID中所有连续的行,第一行在A列中的值为0,最后一行在B列中的值为0。 。
如果您希望将成对的AB分组到参加者试验的组中,则应该可以:
[一个老问题,但仍然有意义,尚未得到公认的答案!