【发布时间】:2015-10-07 15:18:31
【问题描述】:
我在 R 中有以下数据框:
text <- c("[AAA]xxxx", "[AAA] yyyrrr", "[AAA][bbb] bla", "[AAA][bbb] cccvvv",
"[AAA][bbb] bla", "[AAA][bbb][CcC] bla", "[AAA][bbb][CcC] xbbpr")
value <- rnorm(7)
df <- data.frame(text, value)
我想在我的数据框中为第一个、第二个和第三个括号对中包含的文本分别创建三个新变量。
所需的输出如下所示:
text value Bracket1 Bracket2 Bracket3
1 [AAA]xxxx -0.01819034 AAA NA NA
2 [AAA] yyyrrr -0.24808460 AAA NA NA
3 [AAA][bbb] bla -0.36293689 AAA bbb NA
4 [AAA][bbb] cccvvv 1.27757055 AAA bbb NA
5 [AAA][bbb] bla -0.46889715 AAA bbb NA
6 [AAA][bbb][CcC] bla 0.07105410 AAA bbb CcC
7 [AAA][bbb][CcC] xbbpr -0.26603845 AAA bbb CcC
我无法从第一个括号中提取文本,更不用说第二个或第三个了。
例如,我尝试过:
df$Bracket1 <- gsub('.*\\[(.*)\\].*', '\\1', text)
和
df$Bracket1 <- sub('.*\\[(.*)\\].*', '\\1', text)
但这些都产生了:
text value Bracket1
1 [AAA]xxxx -0.01819034 AAA
2 [AAA] yyyrrr -0.24808460 AAA
3 [AAA][bbb] bla -0.36293689 bbb
4 [AAA][bbb] cccvvv 1.27757055 bbb
5 [AAA][bbb] bla -0.46889715 bbb
6 [AAA][bbb][CcC] bla 0.07105410 CcC
7 [AAA][bbb][CcC] xbbpr -0.26603845 CcC
我是 regex 的新手,对 R 比较陌生,提前感谢您的任何建议。
【问题讨论】:
-
太棒了!非常感谢你的帮助。我还不知道它是什么意思,所以现在我将深入研究你的语法并将它们拼凑在一起。你会提交作为答案让我接受吗?