mutate(method = cur_group_id(),
method = paste0("M", method)) %>%
mutate(method = case_when(
str_detect(variable, "testhc35") ~ "M2",
str_detect(variable, "testhc36") ~ "M2",
str_detect(variable, "testhc37") ~ "M2",
str_detect(variable, "testhi1") ~ "M2",
str_detect(variable, "testhi2") ~ "M2",
str_detect(variable, "testhi3") ~ "M2",
method == "M1" ~ "M1",
str_detect(variable, "testhc38") ~ "M3",
str_detect(variable, "testhc39") ~ "M3",
str_detect(variable, "testhc40") ~ "M3",
str_detect(variable, "testhi4") ~ "M3",
str_detect(variable, "testhi5") ~ "M3",
str_detect(variable, "testhi6") ~ "M3")) %>%
unite(method_trait, c("method", "trait"), sep = "")
我相信我可以用str_detect((一起检测前6行,然后将最后6行作为一行。但我不知道该怎么做。
您可以对范围进行协调:
...
str_detect(variable, "testhc3[5-7]") ~ "M2",
str_detect(variable, "testhi[1-3]") ~ "M2",
method == "M1" ~ "M1",
str_detect(variable, "testhc3[8-9]") ~ "M3",
str_detect(variable, "testhc40") ~ "M3"
str_detect(variable, "testhi[4-6]") ~ "M3"
...
然后您可以混合或(|
(运算符:
...
str_detect(variable, "testh(c3[5-7]|i[1-3])") ~ "M2",
method == "M1" ~ "M1",
str_detect(variable, "testh(c3[8-9]|i[4-6]|c40)") ~ "M3",
...