我有一个数据文件,目前有超过170万行,每周增长。我试图用R来创建一个脚本,根据我们随时间推移的性能(产品时代在这方面扮演重要角色)总结质量,以及我们在现场遇到的问题。最初我想过使用dplyr
和read.csv()
而不是使用data.table
和fread()
。速度差异是驱使我朝着data.table
发展的原因,但我在语法上挣扎。使用R data.table包修改日期列
数据最初使用日期代码(如201501(2015年1月)或20150127(2015年1月27日))存储在CSV文件中。我试图将这些日期转换为标准日期,以便我可以计算产品年龄(生产日期至服务呼叫日期)。我想将201601更改为2016-01-31。
我试过以下使用zoo
包 - 我期待一个日期,但我得到了原始的6位代码回来。我的笔记本电脑运行了一段时间。
DT <- DT[, Mfrdate:=as.Date(as.yearmon(as.character(MfrDate), "%Y%m"), frac = 1)]
我搜索谷歌和data.table小抄,我想我一定是接近这个错误 - 设定()似乎是这样做的正确方法。然后,我试过如下:
set(DT,i = .N , j = "MfrDate", value = as.Date(as.yearmon(as.character(DT[,2]), "%Y%m"), frac = 1)
我得到以下错误:
Error in set(DT, i = .N, j = "MfrDate", value = as.Date(as.yearmon(as.character(DT[, :
i[1] is 1821628 which is out of range [1,nrow=1761094].
我以为我= .N是不正确的,所以,我把它和改变它之前错误地运行该命令到别的东西。它运行时没有警告或错误,但它将我的所有列都更改为NA。我错过了一些东西。
帮助表示赞赏。
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RevoUtilsMath_3.2.3
loaded via a namespace (and not attached):
[1] tools_3.2.3
您是否尝试过转换的日期“格式”到具有构建函数的标准R日期格式,因此您可以使用as.Date()或任何其他您想要的方式进行转换。 –