在R中从CSV导入日期

时间:2018-11-09 01:17:29

标签: r csv date

我想将一个excel文件导入r,并且该文件包含具有日期和时间的列,格式为:“ 20.08.2018 16:32:20”。如果我将csv文件本身的格式更改为标准格式,则它看起来像这样:“ 43332,68912”。如果我使用“ read_excel” R读取文件,则此日期看起来像这样:“ 43332.689120370371”

如何将当前格式转换为R中的日期格式?

非常感谢!

3 个答案:

答案 0 :(得分:4)

一个好的做法是,不要编辑.csv(或excel)文件中的任何内容,以免将它们视为只读文件,并在脚本中进行更改(在R中也是如此)。

让我们将数据框称为“ my_df”,将日期时间变量称为“ date”。

library(readr)
library(magrittr)

my_df$date %<>% parse_datetime("%d.%m.%Y %H:%M:%S")

编辑:为了整理您的评论中的信息,我创建了一个Excel文件,其中一个名为STARTED的列带有日期和时间,格式为“ 20.08.2018 16:32”:您在问题中指出的20英寸。由于您似乎喜欢readxl

library(readxl)
library(magrittr)

myData <- read_excel("myData.xlsx")

myData$STARTED %<>% parse_datetime("%d.%m.%Y %H:%M:%S")

与我上面已经编写的代码相同。这给出了:

# A tibble: 1 x 1
  STARTED            
  <dttm>             
1 2018-08-20 16:32:20

如果只得到NA,则数据的格式不符合示例"20.08.2018 16:32:20"的格式

答案 1 :(得分:0)

在与@prosoitos进行讨论之后,看来导入功能无法理解您的日期列:

注释中的示例数据行在日期字符串周围不包含引号。这意味着您通过使用excel(或类似工具)打开数据来复制该数据,或者您的调查工具没有将日期限定为字符串。您是否在excel中打开.csv,将其另存为.xlsx并尝试将结果导入R中?这将解释您所遇到的麻烦,因为excel可以尝试解释日期字符串并将其转换为其他人都没有使用的有趣的Microsoft格式。

请不要这样做,请使用从未与excel接触过的原始csv文件,然后将其直接导入R。

您的读取函数显然无法理解您的日期变量的内容,并且显然将其替换为一些unix standard time,这是自1970年以来的秒。但是,这些时间戳似乎无效(43332类似于中午(在1970/01/01上),否则您可以轻松地将其转换为人类可读的日期。

我建议您尝试使用以下命令导入csv:

read.csv("your_data.csv", header=TRUE, stringsAsFactors=FALSE)

您可能必须指定分隔符,例如sep = "\t"(用于制表符分隔的文件)(如果不是空白),这是读取功能的默认分隔符。之后,数据框中的日期是简单的文本字符串,您可以按照@prosoitos的说明进行操作。

(很抱歉,添加了其他答案。我会对@prosoitos答案进行评论,但我的信誉点不足。)

答案 2 :(得分:-1)

将CSV读入R MyData

read.csv(file="TheDataIWantToReadIn.csv", header=TRUE, sep=",")