方括号时拆分数据框列

Split data frame column when square brackets

我有一个包含一些模型估计的数据框。根据观察结果,估计只有一个值或一个值加上方括号之间的置信区间。顺便说一句,变量是一个字符(我想我需要在某个时候改变它)

df<-data.frame(c("5","3","8 [3 - 5]")

我想将此数据框列 (x) 拆分为两列。第一个用于估计值 (y),第二个用于带或不带括号的置信区间 (z)。

我试过 tidyr::separate 和 tidyr::split(我很喜欢 dplyr 家族:-),但我没有得到想要的结果。

tidyr::separate(col=x,into=c("y","z"),sep="//[")

你知道我做错了什么吗?

这可以通过 extract

来完成
library(tidyr)
extract(df, x, into = c("y", "z"), "(\d+)\s*(.*)")

或在separate

中使用extra参数
separate(df, x, into = c("y", "z"), "\s+", extra = "merge")

数据

df <- data.frame(x= c("5","3","8 [3 - 5]"))

给你:

library("stringr")
df <- data.frame(c("5", "3", "8 [3 - 5]")) 
df2 = str_split_fixed(string = df[,1], pattern = "\[", n = 2)               
df2[,2] = gsub(pattern = "\]", replacement = "", x = df2[,2])