Как построить полугодовые данные равномерно? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть набор дат и доходности акций. Я пытаюсь создать линейный график по полугодовым периодам.

Я изменил свои даты на полугодовые периоды, используя

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

В результате появилась таблица значений, заканчивающаяся на .1 в качестве первого полугодового периода, и значения, заканчивающиеся на .2 в качестве второго полугодового периода.

Я сгруппирую данные по полугодовому периоду, а затем построю график.

enter image description here

Когда я строю данные, ось x искажается. У меня огромный разрыв данных между 2012.2 и 2014.1.

Есть ли у вас какие-либо идеи о том, как сделать это даже? Я думал об использовании 2012.0, 2012.5, 2013 и т. Д., Но это сбивает с толку, когда я смотрю на это позже. Можно ли как-нибудь изменить свои ярлыки на «2011 S2», «2012 S1», «2012 S2» и т. Д. (Видите, я уже запутался, переводя это обратно)

Моя цель - создать график с осью X, который выглядит примерно так:

Goal Axis

Или даже если это был 2012 S1, 2012 S2, просто равномерно удаленный.

Любая помощь будет высоко ценится.

Спасибо!

1 Ответ

0 голосов
/ 01 ноября 2018

Здесь нет воспроизводимого примера, поэтому я собираю здесь набор данных, чтобы ответить на этот вопрос.

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')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...