【问题标题】:Read files with extension .data into R将扩展名为 .data 的文件读入 R
【发布时间】:2014-02-01 19:50:36
【问题描述】:

我需要将一个数据文件读入 R 以完成我的作业。您可以从以下站点下载它。

http://archive.ics.uci.edu/ml/datasets/Acute+Inflammations

数据文件以我从未见过的扩展名 .data 结尾。我尝试了 read.table 等,但无法正确地将其读入 R 。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: r dataset


    【解决方案1】:

    我也为文件“.data”而苦苦挣扎,但我做得很好。这是我的代码:

    df

    我希望这段代码可以帮助你和其他人很多。

    【讨论】:

      【解决方案2】:

      以上回复非常有用。 有点棘手的方法是您可以将文件名或文件类型重命名为 .csv 格式。 然后使用 read.csv 命令就可以完成剩下的工作了。

      【讨论】:

        【解决方案3】:

        你有一个 UTF-16LE 文件,也就是 Windows 上的 Unicode(如果你在那个操作系统上)。 试试这个

        f <-file("http://archive.ics.uci.edu/ml/machine-learning-databases/acute/diagnosis.data", open="r" ,encoding="UTF-16LE")
        data <- read.table(f, dec=",", header=F)
        

        尽管尝试@Gavin Simpson 所说的可能会有所帮助,因为您可以添加标题并保存文件

        【讨论】:

          【解决方案4】:

          这是一个 UTF-16 little endian 文件,开头有一个字节顺序标记。 read.table 将失败,除非您指定正确的编码。这适用于我在 MacOS 上。小数用逗号表示。

          read.table("diagnosis.data", fileEncoding="UTF-16", dec=",")
          
                V1  V2  V3  V4  V5  V6  V7  V8
          1   35.5  no yes  no  no  no  no  no
          2   35.9  no  no yes yes yes yes  no
          3   35.9  no yes  no  no  no  no  no
          

          【讨论】:

            【解决方案5】:

            来自您的链接:

            数据在 ASCII 文件中。属性由 TAB 分隔。

            因此您需要将read.table()sep = "\t" 一起使用

            -- 属性行:例如,'35,9 no no yes yes yes yes no' 其中:'35,9' 患者体温 'no' 出现恶心 '否' 腰痛 '是' 排尿(持续需要排尿) '是' 排尿疼痛 '是' 尿道灼痛、瘙痒、肿胀 尿道出口“是”的决定:膀胱炎症 “否”决定:肾盂起源的肾炎

            看起来它使用逗号作为小数点,所以还要在read.table() 中指定dec = ","

            看起来您需要手动输入列标题,尽管您的链接定义了它们。

            确保您在下面看到 @Gavin Simpson 的评论,以清理此数据集的其他未记录的“功能”。

            【讨论】:

            • 我无法使用 read.table 或 readLines 读取文件。文件开头也有一些流氓字符。
            • 这可能会也可能不会。我在我的文本编辑器中看到"15:56:01: The file "~/Downloads/diagnosis.data" is not valid UTF-8.",这导致read.table() 在我的Linux 机器上出错。在编辑器中打开文件,将编码设置为 UTF-8 并重新保存,允许我使用 read.table("~/Downloads/diagnosis.data", sep = "\t", dec = ",") 读取文件。
            • 分隔符在某些 .data 文件中有“,”。因此可以使用data &lt;-read.table (file.choose (), fileEncoding =" UTF-8 ", sep =", ")。我就是这样用的。如果我不这样做,我会在每列的末尾看到一个额外的“,”。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-25
            • 1970-01-01
            • 2020-08-20
            相关资源
            最近更新 更多