【问题标题】:How can I format my Dates using as.Date() in R?如何在 R 中使用 as.Date() 格式化我的日期?
【发布时间】:2013-08-11 22:24:23
【问题描述】:

我有一个如下所示的数据集:

Date        AE      AA      AEF     Percent
1/1/2012    1211    1000    3556    0.03
1/2/2012    100     2000    3221    0.43
1/3/2012    3423    10000   2343    0.54
1/4/2012    10000   3000    332     0.43
1/5/2012    2342    500     4435    0.43
1/6/2012    2342    800     2342    0.23
1/7/2012    2342    1500    1231    0.12
1/8/2012    111     2300    333 
1/9/2012    1231    1313    3433    
1/10/2012   3453    5654    222 
1/11/2012   3453    3453    454 
1/12/2012   5654    7685    3452    

我正在尝试用 ggplot 绘制这个集合,但 ggplot 没有按顺序绘制日期,因为它们不是数字。我正在尝试使用 as.Date() 转换日期。

library(ggplot2)
data <- read.csv("GCdataViz/test2.csv")
newDates <- as.Date(data$Date)
ggplot(data, aes(x = newDates, y = Percent)) + 
  geom_point(size = 3)  

但是,日期图并不是我所期望的那样。虽然数据集都是一月份的数据(mm/dd/yyyy),但我在 ggplot 中看到了不同的月份。

谁能重现这个并诊断问题?谢谢。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    阅读help(as.Date)——您还需要提供一个格式字符串

    R> as.Date(c("1/1/2001", "1/2/2001", "1/3/2001"), "%m/%d/%Y")
    [1] "2001-01-01" "2001-01-02" "2001-01-03"
    R> 
    

    【讨论】:

    • 我已经尝试过了,但仍然遇到同样的错误。我决定此后只保留默认格式字符串。如果您在 R 中绘制此图,您会看到生成的图在 x 轴、10 月 12 日、10 月 14 日、10 月 16 日等与我的日期不匹配...
    • read.csv 中,添加, stringsAsFactors=FALSE 或者将as.character 包裹在您的日期变量周围。您将这些视为因子变量...
    • 做到了。我把 as.character 放在我的 newDates 变量周围,它绘制了正确的日期。谢谢!我在概念上没有得到一件事:为什么我需要将它转换为字符?我虽然这样做的重点是将我的输入字符日期转换为数字因子。
    【解决方案2】:

    ggplot 不一定能很好地解释日期。您是否尝试过将数据转换为时间序列

    类似:

    # Make data a time series, starting Jan 2009
    data.ts<-ts(data, start=c(2009,1),frequency=52)
    

    然后使用 ggplot 绘制它。

    【讨论】:

    • 嗯,你能进一步解释一下这是做什么的吗?我正在研究时间序列,无法理解它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2020-04-29
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多