将扩展名为 .data 的文件读入 R
Posted
技术标签:
【中文标题】将扩展名为 .data 的文件读入 R【英文标题】:Read files with extension .data into R 【发布时间】:2014-02-01 19:50:36 【问题描述】:我需要将一个数据文件读入 R 以完成我的作业。您可以从以下站点下载它。
http://archive.ics.uci.edu/ml/datasets/Acute+Inflammations
数据文件以我从未见过的扩展名 .data 结尾。我尝试了 read.table 等,但无法正确地将其读入 R 。有人可以帮我解决这个问题吗?
【问题讨论】:
【参考方案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 <-read.table (file.choose (), fileEncoding =" UTF-8 ", sep =", ")
。我就是这样用的。如果我不这样做,我会在每列的末尾看到一个额外的“,”。以上是关于将扩展名为 .data 的文件读入 R的主要内容,如果未能解决你的问题,请参考以下文章