【问题标题】:R data.table text parsingR data.table 文本解析
【发布时间】:2014-01-30 19:28:47
【问题描述】:

我有一个 data.table,其中有一列包含“Exp 928.6.3 (DMSO)”之类的文本。我想将其解析为“Exp 928”和“6.3”等列。似乎强大的 data.table 应该能够快速完成这项工作,但我不知道如何根据自己的意愿弯曲它。有什么想法吗?

谢谢, 詹姆斯

> dput(head(dat))
structure(list(Experiment = c("Exp 927.1.1 (DMSO)", "Exp 927.1.2 (DMSO)", 
"Exp 927.1.3 (DMSO)", "Exp 927.1.4 (DMSO)", "Exp 927.1.5 (DMSO)", 
"Exp 927.1.6 (DMSO)"), Conc.1..LP9. = c("Failed", "Failed", "Failed", 
"Failed", "Failed", "0.97"), Conc.2..LP11. = c("Failed", "Failed", 
"Failed", "Failed", "Failed", "0.87"), Conc.3..LP13. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "0.81"), Conc.4..LP15. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "0.76"), Conc.5..LP17. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "0.58"), Conc.1.uM..µM. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "0.001"), Conc.2.uM..µM. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "0.01"), Conc.3.uM..µM. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "0.1"), Conc.4.uM..µM. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "1"), Conc.5.uM..µM. = c("Failed", 
"Failed", "Failed", "Failed", "Failed", "10"), exptNo = list(
"927", "1", "1", "927", "1", "1"), sample = c("927", "1", 
"2", "927", "1", "2"), replicate = c("927", "1", "3", "927", 
"1", "3")), .Names = c("Experiment", "Conc.1..LP9.", "Conc.2..LP11.", 
"Conc.3..LP13.", "Conc.4..LP15.", "Conc.5..LP17.", "Conc.1.uM..µM.", 
"Conc.2.uM..µM.", "Conc.3.uM..µM.", "Conc.4.uM..µM.", "Conc.5.uM..µM.", 
"exptNo", "sample", "replicate"), sorted = "Experiment", class = c("data.table", 
"data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x0000000000130788>)

【问题讨论】:

  • 我已添加此数据。

标签: r parsing text data.table


【解决方案1】:

我认为有更简单的解决方案,

dat[,do.call(rbind,
        strsplit(gsub( "(.*?)[.](.*) .*","\\1|\\2",Experiment),'[|]'))]

   [,1]      [,2] 
[1,] "Exp 927" "1.1"
[2,] "Exp 927" "1.2"
[3,] "Exp 927" "1.3"
[4,] "Exp 927" "1.4"
[5,] "Exp 927" "1.5"
[6,] "Exp 927" "1.6"

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 2022-12-08
    • 2023-02-18
    • 2015-06-04
    • 1970-01-01
    • 2018-11-10
    • 2018-01-06
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多