readr :: read_csv()不读取日期并返回NA

时间:2015-07-25 00:50:52

标签: r csv datetime

我有一个csv文件test.csv,其中包含一个包含日期的列:

V1
14-01-02 9:10
14-01-02 9:10
14-01-02 9:21
14-01-02 9:34
14-01-02 9:34
14-01-02 9:34

使用readr::read_csv读取文件会产生NAs

V1
1 <NA>
2 <NA>
3 <NA>
4 <NA>
5 <NA>
6 <NA>
Warning message:
9 problems parsing 'test.csv'. See problems(...) for more details. 

read.csv似乎能够像这样加载它没有问题,但它太慢了。实际的表格是322,509 x 45,而不是使用col_type选项指定每个列类型。

无论如何,它可以将列加载为字符?

2 个答案:

答案 0 :(得分:5)

您可以在列表中指定列类型,您只需在其中命名那些您不希望readr尝试识别列类型的列。

read_csv("test.csv", col_types = list(V1 = col_datetime()))

有关详细信息,另请参阅readme on cran

答案 1 :(得分:1)

public void update(Aluno a) { try { Aluno aluno = new Aluno();//(Aluno) em.find(Aluno.class, a.getId()); em.getTransaction().begin(); //aluno.setNome(a.getNome()); ReflectionUtil.copyAttributesFromTo(aluno, a); em.merge(aluno); em.getTransaction().commit(); } catch (Exception e) { System.out.println("Error " + e.getLocalizedMessage()); JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), "Erro", JOptionPane.ERROR_MESSAGE); } finally { em.close(); } } 开始说明?read_csv参数,

  

如果为“NULL”,则列类型将从前30个开始计算             输入上的行。这很方便(也很快),但不是             强大的。如果插补失败,你需要提供             自己纠正类型。

听起来你可能会被困在

col_type

您还可以尝试使用read_csv("temp.csv", col_types="T") # T for datetimes 阅读第一行,获取课程,然后使用read.csv阅读整个文件。您需要在事后将字符转换为日期时间。

read_csv