我有一个像这样的数据框
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 = '\\_[^\\_]*$')
我在这里缺少什么?有人能指出我正确的方向吗?
答案 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