与tidyr包分开的功能仅适用于最后一个“ _”

时间:2019-02-26 16:55:48

标签: r regex tidyr stringr

我有这个数据集:

    test <- tribble(
~x, ~y,
"bmi_diff", 0.2,
"bmi_lb", 0.1,
"bmi_ub", 0.3,
"ht_bin_diff", 5,
"ht_bin_lb", 1,
"ht_bin_ub", 7) 

我想使用tidyr包中的单独函数,但是我只想分隔最后一个_之后的单词,在某些情况下,后者是唯一的_,如{ {1}}或bmi_diff,在其他情况下则是bmi_lb中的第二个。

因此新数据框可能类似于:

ht_bin_diff

我对正则表达式不熟悉,我尝试过:

test2 <- tribble(
~a, ~b, ~y,
"bmi", "diff", 0.2,
"bmi", "lb", 0.1,
"bmi", "ub", 0.3,
"ht_bin", "diff", 5,
"ht_bin", "lb", 1,
"ht_bin", "ub", 7)

由于它将始终以d,l,u开头,但是我需要将该字母保留在新变量中。

或者:

test %>% 
separate(x, c("a", "b"), sep = "_[dlu]")

但这会使变量包含一些变量的“ NA_”,因此我将不得不采取另一步骤删除它。

我希望我能对清洁版本有所了解。我发现了类似的示例,但总是在所有观察结果中它们包含相同数量的空格或simbol的情况下。

谢谢!

0 个答案:

没有答案