从R中读取带有多个分隔符的.txt文件中的数据

时间:2016-02-18 17:34:31

标签: r delimiter

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

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

< Hardley davidson> /// ?? [080] - [42071186] .. [DEC]

我的输出应该如下,

Mike 011234564 ABC

Hardley davidson 08042071186 DEC

谢谢&问候, 莫汉

1 个答案:

答案 0 :(得分:5)

我们可以使用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]"))