我有一个分号分隔的文件,我想阅读。文件中的数据如下。在第4行,我希望只能读取4列。
但是我没有在R中这样做。
ID;Comment;Date;Amt
1;Hello;5-06-2003;85.13
2;World;5-06-2013;127.39
3;Airlines;5-06-1999;148.34
4;"Air"l;ine"s";5-09-2013;87.94
data<-read.table(fileName,header=T,sep = ";",quote="\"",na.strings = c("" , ".", "-", "NA" ));
上述代码不起作用。有人可以帮忙吗?
答案 0 :(得分:6)
require('fs')
包的 fread
,可以处理此类&#34;例外&#34;很好,这将是解决这个问题的一种方法。
data.table
答案 1 :(得分:3)
另一种方法是使用一些美味的正则表达式
path <- tempfile()
writeLines('ID;Comment;Date;Amt
1;Hello;5-06-2003;85.13
2;World;5-06-2013;127.39
3;Airlines;5-06-1999;148.34
4;"Air"l;ine"s";5-09-2013;87.94', path)
(rl <- scan(path, what = ''))
read.table(text = gsub('^(\\w+);(.*?);(Date|[-0-9]+);(Amt|[0-9.]+)$',
'\\1 \\2 \\3 \\4', rl),
quote = '', header = TRUE, stringsAsFactors = FALSE)
# ID Comment Date Amt
# 1 1 Hello 5-06-2003 85.13
# 2 2 World 5-06-2013 127.39
# 3 3 Airlines 5-06-1999 148.34
# 4 4 "Air"l;ine"s" 5-09-2013 87.94
简化版提供相同的东西
read.table(text = gsub('^(.*?);(.*);(.*?);(.*?)$',
'\\1 \\2 \\3 \\4', rl),
quote = '', header = TRUE, stringsAsFactors = FALSE)