【问题标题】:String replace without replacing / dividing numeric data字符串替换而不替换/分割数字数据
【发布时间】:2020-09-23 21:11:24
【问题描述】:

在 R 中使用 stringr 包来执行字符串替换。文本文件有 2 个标题,第 1 行标题和第 2 行子标题。我使用 read_lines(n_max=1) 获取一行并使用 skip=n 定位到下一行。我需要一个正确的正则表达式或模式来保留数字数据(和日期数据),同时替换“|”只能用逗号“,”。

dat_subheader <- read_lines("1999-0.txt", skip=1, n_max=1)
dat_row1 <- read_lines("1999-0.txt", skip=2, n_max=1)
[1] "# XD|A Code|S Code|C Code|Site ID|Parameter|POC|Sample Duration|Unit|Method|Date|Start Time|Sample Value|Null Data Code|Sampling Frequency|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method|Uncertain"
[1] "# XC|A Code|S Code|C Code|Site ID|Parameter|POC|Unit|Method|Year|Period|Number of Samples|Composite Type|Sample Value|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method |Uncertain"

数据内容列表:

[1] "XD|I|01|027|0001|88101|1|7|105|120|19990103|00:00||AS|3|||||||||||||"

现在使用函数 str_replace_all 来尝试替换所有出现的“|”为逗号“,”。我的 str_replce_all() 就这样设置好了:

str_replace_all(dat_row1, "|", ",") 

但结果甚至用逗号“,”替换了数字数据和日期。我知道我错过了这个替换的正确模式,需要一些有用的想法。竖线“|”仅用作分隔符,只需将此分隔符更改为逗号“,”。非常感谢您在正确方向上的帮助。

结果显示替换不正确。

[1] ",X,D,|,I,|,0,1,|,0,2,7,|,0,0,0,1,|,8,8,1,0,1,|,1,|,7,|,1,0,5,|,1,2,0,|,1,9,9,9,0,1,0,3,|,0,0,:,0,0,|,|,A,S,|,3,|,|,|,|,|,|,|,|,|,|,|,|,|,"

【问题讨论】:

    标签: r text stringr


    【解决方案1】:

    你需要使用转义字符\\

    >str_replace_all("XD|I|01|027|0001|88101|1|7|105|120|19990103|00:00||AS|3|||||||||||||", "\\|", ",")
    [1] "XD,I,01,027,0001,88101,1,7,105,120,19990103,00:00,,AS,3,,,,,,,,,,,,,"
    

    【讨论】:

    • 谢谢,我完全忘记了escape char,尽管我以前用过它们,但我想自从我妻子强迫我取消我一直在等待的面谈后,压力就在我身上几个月...
    • 没问题,即使我必须从\一个而不是两个开始尝试两次。当我们有这个时间压力时,这是节省一些时间的地方。
    • 谢谢,我喜欢参与帮助。我之前正在使用 AVATAR EPIC SQL,但没有找到执行层次结构查询的解决方案(不支持 EPIC 中的 SQL 方言); IT 经理无法让它工作,所以他把它传给了我;基本上是为了确保我会失败,这是最好的破坏。我提供了替代设计来卸载日期,在 R 中操作它,重新加载,但 IT 经理拒绝了所有替代设计想法。 [弗雷斯诺县]
    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    相关资源
    最近更新 更多