【问题标题】:Reading data from .txt file with multiple delimiter in R从 R 中具有多个分隔符的 .txt 文件中读取数据
【发布时间】:2016-02-18 17:34:31
【问题描述】:

谁能告诉我如何从具有多个分隔符的 .txt 文件中读取数据。请考虑以下示例以供参考,

////????[011]-[234564]///>>>[ABC]

///??[080]-[42071186]..[DEC]

我的输出应该如下,

迈克 011234564 ABC

哈德利戴维森 08042071186 DEC

感谢和问候, 磨难

【问题讨论】:

    标签: r delimiter


    【解决方案1】:

    我们可以使用readLines 读取它,然后使用正则表达式删除不需要的字符

     gsub('(?<=[0-9])\\s+(?=[0-9])|^\\s+|\\s+$', '', 
           gsub('[[:punct:]]+', ' ', lines), perl=TRUE)
    #[1] "Mike  011234564 ABC"               "Hardley davidson  08042071186 DEC"
    

    或者如果模式相似,我们可以使用单个sub

    sub(".*\\<([^> ]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^A-Z]+([A-Z]+).*", 
               "\\1 \\2\\3 \\4", lines)
    #[1] "Mike 011234564 ABC"       "davidson 08042071186 DEC"
    

    数据

    lines <- readLines(textConnection("< Mike >////????[011]-[234564]///>>>[ABC]
     < Hardley davidson >///??[080]-[42071186]..[DEC]"))
    

    【讨论】:

    • 感谢您的解决方案。如果我收到一个大约 100 MB 的 .txt 文件,其中包含类似的数据。在那种情况下,我们也应该遵循您提到的相同程序......或者R中是否有一个包或函数来读取整个文件这样的数据......比如read.csv ......等等...... .
    • @MohanRaj 您可以使用lines &lt;- readLines('yourfile.txt'),然后使用sub 进行更改。但是,如果您使用的是linux 系统,甚至没有读取数据集,awk/sed 还有其他选项
    猜你喜欢
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2021-04-22
    • 2016-03-05
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多