从R中的csv或tsv读取数据时标题发生变化

时间:2017-11-12 12:01:57

标签: r csv

我正在尝试将数据文件读入R,但每次执行R都会更改标题。我在read函数的文档中看不到任何控制方法。

我有同样的数据保存为csv和tsv,但两者都有同样的问题。

当我在excel或控制台中打开它时,数据文件中的标题如下所示:

cod name_mun    age_class   1985    1985M   1985F   1986    1986M   1986F

但是当我使用read.csv('my_data.csv')read.delim('my_data.tsv') R将其读入R时,将标题更改为:

> colnames(my_data)


[1] "ï..cod"        "name_mun"      "age_class"     "X1985"         "X1985M"        "X1985F"        "X1986"        
  [8] "X1986M"        "X1986F"

为什么R会这样做以及如何防止它发生?

1 个答案:

答案 0 :(得分:2)

你在这里看到两件不同的事情。

  1. 第一列的“ï..”来自文件开头的字节顺序标记。根据您创建文件的方式,您可以将其保存为ASCII或甚至只需UTF-8而不需要BOM来摆脱它。

  2. R不喜欢以数字开头的变量名。如果您查看帮助页面?make.names,您会看到

  3.   

    语法上有效的名称由字母,数字和点或组成   下划线字符并以字母或点开头未跟随   一个数字。诸如“.2way”之类的名称无效,也不是   保留字。

    当您通过使用read.csv的check.names参数读取数据时可以解决这个问题。

    my_data = read.csv(file.choose(), check.names = FALSE)
    

    这会将列名保留为数字。它还会将BOM更改为完整的BOM“”。