导入DAT文件 - 解析问题

时间:2012-08-01 16:31:29

标签: r import

我有一个制表符分隔的DAT文件,我想读入R.当我使用read.delim导入数据时,我的数据框具有正确的列数,但行数多于预期。

我的数据文件代表对调查的回复。在深入挖掘之后,看起来R正在创建一个新的记录,当有一个“。”在代表开放式响应的列中。似乎有时受访者可能已经点击“输入”来添加新行。

有没有办法解决这个问题?我阅读了帮助,但我不知道如何告诉R在字符响应中忽略这个字符。

以下是错误解析的示例响应。这是一个响应,但您可以看到有一些返回信息在由R解析时将其放在多行上。

possible ask for size before giving free tshirt.
 Also maybe have the interview in conference rooms instead of tight offices. I felt very cramped.
 I would of loved to have gone, but just had to make a choices and had more options then I expected.

我正在用SPSS分析数据并且数据很好,但是,我需要使用R来进行更高级的建模

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:3)

有一个'na.strings'的论点。您不提供任何测试用例,但也许您可以这样做:

read.delim(file="myfil.DAT", na.strings=".")

我认为如果您能够对问题进行编辑以更好地证明问题,那将是一件好事。我无法通过简单的努力创建错误:

> read.delim(text="a\tb\t.\nc\td\te\n",header=FALSE)
  V1 V2 V3
1  a  b  .
2  c  d  e
> read.delim(text="a\tb\t.\nc\td\te\n",header=FALSE, na.strings=".")
  V1 V2   V3
1  a  b <NA>
2  c  d    e

(澄清之后上述评论并不特别相关。)这将引入一个包含换行符的字段....但它要求在原始文件中引用“字段”:

> scan(file=textConnection("'a\nb'\nx\t.\nc\td\te\n"), what=list("","","") )
Read 2 records
[[1]]
[1] "a\nb" "c"   

[[2]]
[1] "x" "d"

[[3]]
[1] "." "e"