问题:

Is there a way to specify the Date format when using the colClasses argument in read.table/read.csv?

(我意识到我可以在导入后进行转换,但是有很多这样的日期列,在导入步骤中进行转换会更容易)


例子:

我有一本书.csv,日期列格式为%d/%m/%Y.

dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date"))

这导致转换错误.例如,15/07/2008变成0015-07-20.


可复制代码:

data <- 
structure(list(func_loc = structure(c(1L, 2L, 3L, 3L, 3L, 3L, 
3L, 4L, 4L, 5L), .Label = c("3076WAG0003", "3076WAG0004", "3076WAG0007", 
"3076WAG0009", "3076WAG0010"), class = "factor"), order_type = structure(c(3L, 
3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 1L), .Label = c("PM01", "PM02", 
"PM03"), class = "factor"), actual_finish = structure(c(4L, 6L, 
1L, 2L, 3L, 7L, 1L, 8L, 1L, 5L), .Label = c("", "11/03/2008", 
"14/08/2008", "15/07/2008", "17/03/2008", "19/01/2009", "22/09/2008", 
"6/09/2007"), class = "factor")), .Names = c("func_loc", "order_type", 
"actual_finish"), row.names = c(NA, 10L), class = "data.frame")


write.csv(data,"data.csv", row.names = F)                                                        

dataImport <- read.csv("data.csv")
str(dataImport)
dataImport

dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date"))
str(dataImport)
dataImport

以下是输出结果:

代码输出

推荐答案

您可以编写自己的函数,接受字符串并使用所需格式将其转换为日期,然后使用setAs将其设置为as方法.然后可以将函数用作colclass的一部分.

try :

setAs("character","myDate", function(from) as.Date(from, format="%d/%m/%Y") )

tmp <- c("1, 15/08/2008", "2, 23/05/2010")
con <- textConnection(tmp)

tmp2 <- read.csv(con, colClasses=c('numeric','myDate'), header=FALSE)
str(tmp2)

然后根据需要进行修改以处理数据.

编辑---

您可能希望先运行setClass('myDate')以避免警告(您可以忽略警告,但如果您经常这样做,它可能会变得烦人,这是一个简单的调用,可以消除它).

R相关问答推荐

使用split.zoo界定xts物体的降水事件

feature_weights参数没有影响Xgboost

将一个载体的值相加,直到达到另一个载体的值

按R中的组查找相邻列的行累积和的最大值

基于现有类创建类的打印方法(即,打印tibles更长时间)

使用gggrassure减少地块之间的空间

如何得到每四个元素向量R?

如何基于两个条件从一列中提取行

如何在R中通过多个变量创建交叉表?

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

在列表中排列R数据框中的列顺序

我如何go 掉盒子图底部的数字?

如何在R中使用hmm TMB提前一步预测观察到的状态?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

在ggplot2上从多个数据框创建复杂的自定义图形

使用ifElse语句在ggploy中设置aes y值

R仅当存在列时才发生变异

在生成打印的自定义函数中,可以通过变量将线型或 colored颜色 设置为NULL吗?

为什么不能使用lApply在包装函数中调用子集

使用一个标签共享多个组图图例符号