将列分隔为R中最后一个下划线的2列

时间:2018-05-24 21:03:42

标签: r tidyr

我有一个像这样的数据框

id <-c("1","2","3")
col <- c("CHB_len_SCM_max","CHB_brf_SCM_min","CHB_PROC_S_SV_mean")

df <- data.frame(id,col)

我想通过将“col”分隔为测量和统计来创建2列。 stat基本上是最后一个下划线之后的文本(最大值,最小值,平均值等)

所需的输出

  id   Measurement stat
   1   CHB_len_SCM  max  
   2   CHB_brf_SCM  min   
   3 CHB_PROC_S_SV mean    

我试过这种方式但是空列中的stat列。我不确定我是否指向最后一个下划线。

library(tidyverse)
df1 <- df %>%
  # Separate the sensors and the summary statistic
  separate(col, into = c("Measurement", "stat"),sep = '\\_[^\\_]*$')

我在这里缺少什么?有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:6)

我们可以通过捕获两个组来使用print(data["elements"][0]["tags"]["name"]) print(data['elements'][0]['id']) ,确保第二个组在字符串结尾(extract)之前有一个或多个不是_的字符

$

或者使用带有正则表达式的library(tidyverse) df %>% extract(col, into = c("Measurement", "stat"), "(.*)_([^_]+)$") # id Measurement stat #1 1 CHB_len_SCM max #2 2 CHB_brf_SCM min #3 3 CHB_PROC_S_SV mean

separate