【问题标题】:read.csv with header but ignore second row [duplicate]read.csv 带有标题但忽略第二行 [重复]
【发布时间】:2023-03-22 23:24:01
【问题描述】:

我有这个示例数据集:

sub_id,age,country,score
{subID},{Age},{CountryOfOrigin},{Qscore}
1,23,UK,15
2,28,uk,19
3,40,United Kingdom,33
4,19,france,21
5,36,Italy,16
6,24,UK,18
7,26,greece,16
8,22,italy,15

我想阅读并执行一些计算/分析。我想要标题行,但该行会导致问题。我尝试将其读入并删除第一行({with these}...这是一个无意义的行),但由于在读入时列中的混合数据类型,R 不会让我对任何内容执行计算因为数据不再是数字了。

这是一个更大数据框的示例,因此我不能这样做并手动指定要更改为数字的列。

似乎最好的解决方案是读取带有标题的 csv 文件,但跳过第一行。

df <- read.csv('scores.csv',
               header=TRUE,
               skip=1)

这有效,但它转换了我所有的列名!比如df$Qscore变成df$X.Qscore.,这显然不太理想。我至少可以对此进行计算,但我不知道我做错了什么。

我还尝试只读取标题,然后读取没有标题的数据,并将它们粘在一起,但也有很多问题。这一定是一个普遍的问题......

注意:我是 R 新手,我遇到的问题似乎很常见,但我无法在这里找到答案(可能是因为我没有知道要搜索什么吗?),如果这是大量重复,请道歉......

【问题讨论】:

  • 您可以使用readLines将文件作为字符向量读入,然后删除向量的第二个元素,然后使用textConnection将向量传递给read.csv
  • @SaurabhChauhan 我确实看到了这个,我想知道是否有更直接的解决方案。那里的最高评论确实有效,尽管另一个评论(只是在 read.csv() 调用后删除第二行)不起作用,因为列数据类型不好。这 readLines & textConnection 真的是最好的解决方案吗?这似乎是一个常见的问题,我们不应该付出这么多努力来实现这一目标。

标签: r csv header read.csv


【解决方案1】:

我们可以滥用 comment.char 选项:

read.table(text = "sub_id,age,country,score
{subID},{Age},{CountryOfOrigin},{Qscore}
1,23,UK,15
2,28,uk,19
3,40,United Kingdom,33
4,19,france,21
5,36,Italy,16
6,24,UK,18
7,26,greece,16
8,22,italy,15", sep = ",", comment.char = "{", header = TRUE)

【讨论】:

  • 不错,永远不会提醒自己。请注意,read.csv 也可以使用,不需要sepheader
  • @RuiBarradas 没错,我只是习惯了更通用的read.table 函数和更多选项。 read.csv 只是 read.table 的漂亮包装。
  • 在我的真实数据集(不是示例中的那个)中存在更多问题 - 它不仅仅是“{”,还有其他一些东西,我不想考虑每个单独的,而只是一种更可靠的处理方式。还是谢谢
  • @fffrost 那么您应该发布具有代表性或真实数据的数据示例。无论如何,链接的帖子应该处理任何文件。
猜你喜欢
  • 2013-03-29
  • 2023-03-24
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2013-06-02
  • 1970-01-01
  • 2011-11-12
相关资源
最近更新 更多