regex - R + reshape : using colsplit w/regex

标签 regex r reshape

我正在尝试使用 colsplit 分解数据框中的向量。事实上,我们将正则表达式作为 colsplit 的 arg,这让我认为它可以很灵活,但我遇到了麻烦(可能只是因为我不理解 R 中的正则表达式)。

问题是:

让我们创建一个向量...

> library(reshape)
> my_var_1 <- factor(c("x00_aaa_123","x00_bbb_123","x00_ccc_123","x01_aaa_123","x01_bbb_123","x01_ccc_123","x02_aaa_123","x02_bbb_123","x02_ccc_123"))

我想在第一个下划线处将它分成两列。 换句话说,我希望我的最终结果是这样的......

    x whatever
1 x00  aaa_123
2 x00  bbb_123
3 x00  ccc_123
4 x01  aaa_123
5 x01  bbb_123
6 x01  ccc_123
7 x02  aaa_123
8 x02  bbb_123
9 x02  ccc_123

我试图在 colspan 中找到合适的正则表达式,但没有成功。这是我能得到的最接近的...

> colsplit(my_var_1, split="_", c("x","whatever")) 
    x whatever NA.
1 x00      aaa 123
2 x00      bbb 123
3 x00      ccc 123
4 x01      aaa 123
5 x01      bbb 123
6 x01      ccc 123
7 x02      aaa 123
8 x02      bbb 123
9 x02      ccc 123

它使用拆分正则表达式作为简单的分隔符,它给了我三列。我不想拆分第二个下划线(更糟的是,在我的真实数据中,我有任意数量的下划线,而不仅仅是两个)。

是否有一个表达“ split ”的表达方式可以满足我的要求?

我曾希望 colsplit 中的正则表达式允许我在组上进行匹配,并且组匹配将是拆分的内容,但情况似乎并非如此。

* 编辑(感谢@Joshuaulrich)colsplit 在使用较新的 reshape2 时“按预期”工作!!!

最佳答案

你的代码为我抛出一个错误:

> colsplit(my_var_1, split="_", c("x","whatever"))
Error in colsplit(my_var_1, split = "_", c("x", "whatever")) : 
  unused argument(s) (split = "_")

split 不是 colsplit 的参数。你想要的参数是 pattern,或者你可以只依赖位置匹配:

> colsplit(my_var_1, "_", c("x","whatever"))
    x whatever
1 x00  aaa_123
2 x00  bbb_123
3 x00  ccc_123
4 x01  aaa_123
5 x01  bbb_123
6 x01  ccc_123
7 x02  aaa_123
8 x02  bbb_123
9 x02  ccc_123

关于regex - R + reshape : using colsplit w/regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8349453/

相关文章:

sql - MYSQL REGEXP/RLIKE 有什么建议吗?

java - @Pattern , JSR303 bean 验证 : regex check max 5 words and not blank

r - 如何获得每个参与者的分配

reshape 将两列添加到 data.frame

ruby - 匹配 ruby 中的大括号,前面有一个字符

regex - Bash 删除所有以包含空格的字符串开头的行

r - 以 react 方式更新 Shiny 中的 sliderInput

r - 如何将可变数量的连接标签的列拆分为每个标签一列?

r - 熔化多行

python - NumPy 使用 reshape 函数 reshape 数组