CSV 导入到数据框时跳过的第一行

问题描述

我在导入简单的 csv 文件时遇到问题。 我使用欧盟统计局提供的希腊季度 GDP 数据的公开数据。

我使用以下命令导入数据:

gdp_greece = dataframe([myenv,"namq_10_gdp_1_Data.csv"]);

当我导入它时,它正确识别了标题,但遗漏了第一行,即 1995Q1 的数据条目。它仅标识 1995Q2 及以后。

csv 文件的前三行如下所示:

"TIME","GEO","UNIT","S_ADJ","NA_ITEM","Value","Flag and Footnotes"
"1995Q1","Greece","Chain linked volumes,index 2010=100","Seasonally and calendar adjusted data","Gross domestic product at market prices","72.5",""
"1995Q2","73.2",""

因此,当我使用以下命令检查数据帧的第一个条目时:gdp_greece(1,1) 命令窗口给了我 "1995Q2"。为什么会这样,我该如何避免?

我现在从 1994Q4 开始导入相同的数据,以便 Octave 省略第 1 行并从所需的 1995Q1 开始,但问题是,我不知道这种行为是否只是在我的电脑上。我必须在大学提交这个项目,但如果我的教授执行我的代码并且它标识 1994Q4 为第一行,那么代码不再正确,我的计算都是错误的。

有人知道如何解决这个问题吗?我会非常感激。我查看了 Octave 文档并搜索了类似的问题,但找不到任何问题。非常感谢任何帮助。

解决方法

我是“dataframe”包的作者、维护者和孤独的贡献者。在你的情况下,问题很简单。前两行可能包含变量名称和变量类型。所以你的第二行被这个过程“吃掉”了。

我开始编写“数据框”是因为我希望在 R 中有类似相同概念的东西。然后 MatLAB 实现了两种方法来读取带有元信息的 CSV,最后一种是“表”对象。由于缺乏人力,我无法跟上发展的步伐。欢迎您加入。

OTOH ...如果您正在处理大数据集,那么 R 会更适合。特别是https://bookdown.org/ndphillips/YaRrr/

中描述的一组新的集成工具箱

问候

帕斯卡

,

更新

您遇到了一个 known bug,它已在开发存储库中修复,但尚未发布。

理论上,您可以尝试从 dev sources 安装数据帧包,因为它们已经包含修复程序。另外,包的作者刚刚回复了你的帖子,所以希望他可以创建一个新版本,可以正常从八度锻造下载:)

话虽如此,这里还有一个错误,就是对包含逗号的引用字符串的元素处理不正确。我已在此处将其作为单独的错误提交:(bug #60138)。

出于这个原因,我会改为使用 cell2csv 包中出色的 io 从您的 csv 文件中收集数据,然后直接通过生成的元胞数组对其进行处理。

如果对您有帮助,您可以将其进一步转换为结构体数组,甚至是包含单元格/数值数组作为成员的单个结构体,这实际上是其他语言中的数据帧。

或者,如果您仍然热衷于使用 dataframe 包,因为它提供了现有的功能,您可以将生成的单元格直接提供给 dataframe(显然,在对提到的第一个错误应用修复之后以上),即 dataframe( csv2cell( "data.csv" )); 而不是 dataframe( "data.csv" );。这应该正确解析引用的元素并绕过 bug #60138。 :)