【发布时间】:2015-09-25 01:03:19
【问题描述】:
在回复this question,时我写了如下代码:
df <- data.frame(Call_Num = c("HV5822.H4 C47 Circulating Collection, 3rd Floor", "QE511.4 .G53 1982 Circulating Collection, 3rd Floor", "TL515 .M63 Circulating Collection, 3rd Floor", "D753 .F4 Circulating Collection, 3rd Floor", "DB89.F7 D4 Circulating Collection, 3rd Floor"))
require(stringr)
matches = str_match(df$Call_Num, "([A-Z]+)(\\d+)\\s*\\.")
df2 <- data.frame(df, letter=matches[,2], number=matches[,3])
现在我的问题是:有没有一种简单的方法可以将最后两行合并为一个dplyr 调用,大概使用mutate()?或者,我也对do() 的解决方案感兴趣。对于 mutate() 方法,由于我们要提取 2 个组,我将采用一种解决方案,使用不同的正则表达式调用 str_match() 两次,每个所需的组一个。
编辑:澄清一下,我在这里看到的主要挑战是str_match 返回一个矩阵,我想知道如何在mutate() 或do() 中处理它。我对使用其他提取信息的方法解决原始问题不感兴趣。已经给出了很多这样的解决方案here.
【问题讨论】: