首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用readr::read_csv()导入日期

使用readr::read_csv()导入日期
EN

Stack Overflow用户
提问于 2021-07-29 16:48:45
回答 2查看 316关注 0票数 0

我想导入CSV文件

代码语言:javascript
复制
today,color
01/02,blue
01/04,green
03/14,orange
07/04,red

使用readr创建一列date对象。

代码语言:javascript
复制
library(tidyverse)
library(lubridate)

read_csv("test.csv", col_types = "Dc") #first attempt
read_csv("test.csv", col_types = cols( #second attempt
         col_date(format = "%m/%d"),
         col_character()))

我认为我的第一次尝试由于非标准日期格式而不起作用,所以在我的第二次尝试中,我很明确。两者都没有成功,并且都返回了相同的警告。

代码语言:javascript
复制
Warning: 4 parsing failures.
row   col   expected actual       file
  1 today valid date  01/02 'test.csv'
  2 today valid date  01/04 'test.csv'
  3 today valid date  03/14 'test.csv'
  4 today valid date  07/04 'test.csv'
# A tibble: 4 x 2
  today      color
  <date>     <chr>
1 NA         blue
2 NA         green
3 NA         orange
4 NA         red

我应该如何构造这个导入?

EN

回答 2

Stack Overflow用户

发布于 2021-07-29 16:52:38

它不是日期格式,因此col_date将不起作用,也就是说,我们也需要'year‘来使用它。相反,最好将其读为character

代码语言:javascript
复制
df1 <- read_csv("test.csv", col_types = "cc") 

然后,根据需要添加year部件,将其转换为Date

代码语言:javascript
复制
library(lubridate)
df1$today <- dmy(paste0(df1$today, "/2021"))
票数 1
EN

Stack Overflow用户

发布于 2021-07-29 18:32:12

真正的问题是,我们所拥有的不是日期。日期有年份,问题中的输入没有年份。

1)为了克服上面的问题,我们可以定义一个特殊的类,它可以接受所需格式的不带年的月份和日期。

代码语言:javascript
复制
setClass("mmdd")
ch2mmdd <- function(from) as.Date(from, format = "%m/%d")
setAs("character", "mmdd", ch2mmdd)

read.csv(text = Lines, colClasses = c("mmdd", "character"))

给予:

代码语言:javascript
复制
       today  color
1 2021-01-02   blue
2 2021-01-04  green
3 2021-03-14 orange
4 2021-07-04    red

2)或者使用read_csv,之后再进行转换。它使用(1)中的ch2mmdd函数,但不需要相关的S4类。另一方面,它在之后进行转换,而问题似乎想要这样做,因为它在(1)中被读入。

代码语言:javascript
复制
Lines %>%
  read_csv %>%
  mutate(today = ch2mmdd(today))

备注

代码语言:javascript
复制
Lines <- "today,color
01/02,blue
01/04,green
03/14,orange
07/04,red"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68579956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档