【问题标题】:How to plot semiannual data evenly?如何均匀地绘制半年度数据?
【发布时间】:2018-11-01 16:03:53
【问题描述】:

我有一个日期和股票收益数据集。我正在尝试按半年期创建折线图。

我使用

将日期更改为半年期
dataTable <- dataTable %>% mutate(Semiannual = semester(Date, with_year = TRUE))

查看我的数据样本以及创建的新半年专栏。

        Date      Return    Semiannual
1  2014-11-30    163.07848     2014.2
2  2014-06-30     10.48201     2014.1
3  2014-03-31    110.00537     2014.1
4  2012-12-31    -95.01492     2012.2
5  2017-07-31      3.30668     2017.2
6  2012-10-31     -0.48359     2012.2
7  2015-12-31     -0.50400     2015.2
8  2016-06-30    974.87289     2016.1
9  2016-02-28     49.37500     2016.1
10 2017-01-31      1.62813     2017.1

这产生了一个以 0.1 结尾的值作为第一个半年期和以 .2 作为第二个半年期结束的值的表格。

我将按半年期对数据进行分组,然后绘制它。

当我绘制数据时,x 轴是扭曲的。我在 2012.2 和 2014.1 之间有巨大的数据差距。

您对如何实现这一点有任何想法吗?我考虑过使用 2012.0、2012.5、2013 等。但是当我稍后查看它时往往会感到困惑。有什么方法可以将我的标签更改为“2011 S2”、“2012 S1”、“2012 S2”等(看,我已经把它翻译回来了)

我的目标是绘制一个类似于此的 x 轴绘图:

或者即使是2012 S1、2012 S2,也只是平均距离。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • lubridate 可能对你有帮助。如果您可以提供数据的一个子集和一个最小示例来帮助演示您正在尝试做什么,那将更容易为您指明正确的方向。
  • 您能否通过共享您的数据样本来重现您的问题,以便其他人可以提供帮助(请不要使用str()head() 或屏幕截图)?你可以使用reprexdatapasta 包来帮助你。另见Help me Help you & How to make a great R reproducible example?
  • 更新了!谢谢!

标签: r ggplot2 dplyr


【解决方案1】:

这里没有可重现的例子,所以我在这里模拟一个数据集来回答这个问题。

library(tidyverse)
library(data.table)
library(lubridate)
set.seed(123)
data.table(
    date = today() + 1:1000
    ,value = rnorm(1000,0,10)
    # sim stock price
) %>% 
    mutate(
        date = floor_date(date, unit = 'halfyear')
        # I suggest you maintain the date in yyyy-mm-dd type
    ) %>% 
    group_by(date) %>% 
    summarise(value = mean(value)) %>% 
    ggplot(aes(date,value)) +
        geom_line() + 
        scale_x_date(breaks = '6 month')

【讨论】:

  • 谢谢您 - 我猜我在您粘贴答案时对其进行了编辑,所以对此我深表歉意。
  • @rrpking,我认为还有其他方法可以做到这一点,例如 tibbletime 打包或将 date 放入有序因子变量中。我仍在努力。当我完成它时,我会在这里发布。
猜你喜欢
  • 1970-01-01
  • 2018-01-23
  • 2020-11-03
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多