【发布时间】:2017-12-26 22:09:43
【问题描述】:
我有一个数据,有一个名为Date的列,我将数据输入到R中。
这是我的数据:
unique(data$Date)
[1] "" "2016/12/20" "2016/12/27" "2017/1/7" "2017/1/27" "2017/2/1" "2017/2/2" "2017/2/5" "2017/2/6" "2017/2/7"
[11] "2017/2/8" "2017/2/10" "2017/2/11" "2017/2/13" "2017/2/14" "2017/2/15" "2017/2/17" "2017/2/16" "2017/2/24" "2017/2/19"
[21] "2017/2/21" "2017/2/20" "2017/2/26" "2017/2/22" "2017/3/2" "2017/2/25" "2017/2/28" "2017/3/1" "2017/3/4" "2017/3/5"
[31] "2017/3/6" "2017/3/10" "2017/3/8" "2017/3/9" "2017/3/11" "2017/3/12" "2017/3/13" "2017/3/15" "2017/3/29" "2017/5/13"
[41] "2015/10/5" "2016/2/22" "2015/3/6" "2015/3/7" "2015/10/15" "2015/3/9" "2016/1/30" "2015/10/29" "2015/10/24" "2015/10/17"
[51] "2016/1/8" "2015/9/24" "2016/2/15" "2015/12/8" "2015/12/10" "2016/2/6" "2015/11/29" "2016/1/23" "2015/10/11" "2016/2/16"
[61] "2015/9/28" "2016/1/29" "2015/11/27" "2015/10/12" "2015/11/1" "2015/11/16" "2015/10/10" "2015/11/30" "2016/1/2" "2016/1/21"
[71] "2016/4/22" "2015/10/21" "2015/11/12" "2015/12/28" "2015/12/30" "2015/11/6" "2015/10/8" "2015/12/6" "2016/1/24" "2016/1/17"
[81] "2016/2/26" "2016/3/6" "2016/2/17" "2016/1/11" "2015/12/3" "2016/2/11" "2015/11/22" "2015/10/2" "2015/10/3" "2015/11/4"
[91] "2016/2/10" "2015/12/9" "2015/10/9" "2015/12/1" "2016/2/25" "2016/1/19" "2016/1/18" "2015/12/13" "2016/2/14" "2016/3/10"
class(data$Date)
[1] "character"
我将这个character 更改为date 格式,使用as.Date():
data$Date <- as.Date(data$Date)
Error in charToDate(x) :
character string is not in a standard unambiguous format
我不知道如何弄清楚。我认为问题是数据中的""。我还有另一列名为Date2,但该列中不包含""。
有什么建议吗?
另外,如果我想同时对两列进行as.Date 并定义像`as.Date(x, "%Y/%m/%d") 这样的指定格式,我该怎么办?
data[,c("Date", "Date2") := lapply(.SD, as.Date), .SDcols = c("Date", "Date2")]
【问题讨论】:
-
指定日期的格式。
as.Date(x, "%Y/%m/%d") -
也许我可以先把
""改成NA再改成date格式?这可能吗? -
那么
as.Date检查第一项以“猜测”格式,然后将其应用于每个后续项?因为as.Date(c("2015/10/5", ""))很好。但是如果第一个是"",那它有问题吗? -
@SymbolixAU - 如果您在控制台中输入
as.Date.character并检查代码,您可以看到此检查。它似乎在做你猜想的事情。 -
对于更新后的问题,
data[,:=(Date = as.Date(Date), Date2 = as.Date(Date2))]应该这样做(:=周围有反引号)