首页 > 解决方案 > 第一个和第二个“_”之间的正则表达式

问题描述

大家好,我有一个关注数据:

data
proprio_com_luz
proprio_sem_ola_acabo

我想创建两个新变量

data                   condition variable
proprio_com_luz           com        luz
proprio_sem_ola_acabo     sem        ola_acabo

什么正则表达式在这里帮助我?

标签: rregex

解决方案


extracttidyr:_

library(tidyr)

extract(df, data, c("condition", "variable"),
        regex = "^[^_]+_([^_]+)_(.+)$", remove = FALSE)

或以 R 为基数:

pattern <- "^[^_]+_([^_]+)_(.+)$"

df$condition = sub(pattern, "\\1", df$data)
df$variable = sub(pattern, "\\2", df$data)

输出:

                   data condition  variable
1       proprio_com_luz       com       luz
2 proprio_sem_ola_acabo       sem ola_acabo

数据:

df <- data.frame(data = c("proprio_com_luz",
                          "proprio_sem_ola_acabo"))

推荐阅读