\Debugbar::info($variable);
library(tidyverse)
str <- tibble(value = c("var_imp_01_prevalence",
"var_imp_MeanDecreaseGini_variance_pairwise_distance",
"var_imp_06_extinction_rate"))
str
value
<chr>
1 var_imp_01_prevalence
2 var_imp_MeanDecreaseGini_variance_pairwise_distance
3 var_imp_06_extinction_rate
所以,基本上我想使用tidyr :: separate函数找到第三个'_'并分隔我的列。
答案 0 :(得分:1)
使用extract
,可以完成,例如这条路。 ^
对于根据上一个_
str %>% extract(value, into = c("a", "b"), regex = "^([^_]*_[^_]*_[^_*]*)_(.*)")
# A tibble: 3 x 2
a b
* <chr> <chr>
1 var_imp_01 prevalence
2 var_imp_MeanDecreaseGini variance_pairwise_distance
3 var_imp_06 extinction_rate
答案 1 :(得分:1)
str%>%mutate(value=sub("((_.*?){3})","\\1SPLIT",value))%>%separate(value,c("a","b"),"_SPLIT")
# A tibble: 3 x 2
a b
* <chr> <chr>
1 var_imp_01 prevalence
2 var_imp_MeanDecreaseGini variance_pairwise_distance
3 var_imp_06 extinction_rate
答案 2 :(得分:0)
这是regex
的工作,请尝试使用以下代码:
# For 'a'
a <- sub("(^.*)_...", "\\1", str[1]) # [1] "var_imp_01valence"
# For 'b'
b <- sub("^.*_(...)", "\\1", str[1]) # [1] "prevalence"
我不是regex
的专家,但至少为你的榜样做好了工作。
希望这可以提供帮助。