【问题标题】:Manipulating string data in R to specific format将 R 中的字符串数据操作为特定格式
【发布时间】:2017-08-24 03:56:37
【问题描述】:

我有一大段文字:

test<-"ABC (0033 - test), CCPM (0431 - CCPM), FGC (0432 -YYY)"

我想操纵它们,使其变成:

 ABC (0033 - test),0033       
 CCPM (0431 - CCPM),0431
 FGC (0432 -YYY),0432

我该怎么做?

【问题讨论】:

  • 到目前为止你有没有尝试过?如果是这样,请分享您的代码并准确描述您遇到的问题。

标签: r regex string


【解决方案1】:

我们可以使用gsub

gsub("(\\d+)([^)]+\\))", "\\1\\2,\\1", test)
[1] "ABC (0033 - test),0033, CCPM (0431 - CCPM),0431, FGC (0432 -YYY),0432"

如果我们需要打印

cat(gsub("(\\d+)([^)]+\\)),*", "\\1\\2,\\1\n", test), sep="\n")
# ABC (0033 - test),0033
# CCPM (0431 - CCPM),0431
# FGC (0432 -YYY),0432

如果我们需要一个包含 3 个独立元素的向量

unname(sapply(strsplit(test, ", ")[[1]], function(x) 
    paste(x, regmatches(x, regexpr("\\d+", x)), sep=",")))
#[1] "ABC (0033 - test),0033"  "CCPM (0431 - CCPM),0431" "FGC (0432 -YYY),0432"   

【讨论】:

  • 非常感谢!为什么有时我在打印结果时每行开头都有一个逗号?
  • @Headandtoes 如果您检查第二个输出,我在行首没有得到任何逗号
猜你喜欢
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 2017-02-22
  • 2018-11-29
  • 1970-01-01
  • 2014-04-15
相关资源
最近更新 更多