Я провожу анализ в наборе данных Bike Sharing (kaggle). Вот образец:
Голова
yr mnth Ano cnt
<int> <int> <chr> <int>
1 0 1 2011 985
2 0 1 2011 801
3 0 1 2011 1349
4 0 1 2011 1562
5 0 1 2011 1600
Хвост
yr mnth Ano cnt
<int> <int> <chr> <int>
1 1 12 2012 2114
2 1 12 2012 3095
3 1 12 2012 1341
4 1 12 2012 1796
5 1 12 2012 2729
Где «cnt» означает количество велосипедов на каждый день. Каждая строка это день с 01.01.2011 по 12.12.2012
Моя цель состояла в том, чтобы проанализировать число центов за каждый месяц как с 2011, так и с 2012 года; Однако я продолжаю получать этот странный вывод:
мой код:
k<- bike_new %>%
ggplot(aes(x=mnth,y=cnt))+ geom_line();k
Что я здесь делаю неправильно?
Как упоминалось в мудром совете @AllanCameron, добавьте элемент group
в качестве фактора, и, поскольку у вас есть два года, вам понадобится цвет. Вот код, использующий смоделированные данные:
library(ggplot2)
library(dplyr)
#Code
bike_new %>%
ggplot(aes(x=factor(mnth),y=cnt,group=factor(Ano),color=factor(Ano)))+
geom_line()+
xlab('month')+
labs(color='Ano')
Выход:
Некоторые используемые данные:
#Data
bike_new <- structure(list(yr = c(0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L,
0L, 0L, 0L, 0L, 0L), mnth = c(1, 1, 1, 1, 1, 12, 12, 12, 12,
12, 2, 2, 2, 2, 2), Ano = c(2011L, 2011L, 2011L, 2011L, 2011L,
2012L, 2012L, 2012L, 2012L, 2012L, 2011L, 2011L, 2011L, 2011L,
2011L), cnt = c(985, 801, 1349, 1562, 1600, 2114, 3095, 1341,
1796, 2729, 1085, 901, 1449, 1662, 1700)), row.names = c(NA,
-15L), class = "data.frame")
Если вы хотите видеть только одну строку в год, @Phil может объяснить стратегию, используя другую переменную в качестве дня. Или вы можете агрегировать значения в следующей форме:
#Code 2
bike_new %>%
group_by(Ano,mnth) %>%
summarise(cnt=sum(cnt,na.rm=T)) %>%
ggplot(aes(x=factor(mnth),y=cnt,group=factor(Ano),color=factor(Ano)))+
geom_line()+
geom_point()+
xlab('month')+
labs(color='Ano')
Выход:
Поскольку вы анализируете количество велосипедов.
Этот вывод не то, что я ищу. Я имею в виду линейную диаграмму временных рядов, а не эти вертикальные линии
@insanedshk Пожалуйста, предоставьте больше данных, чтобы помочь вам!
@insanedshk Причина, по которой появляются эти вертикальные линии, заключается в том, что данные показывают одни и те же месяцы и годы несколько раз с разным количеством каждый раз. Если вам нужна фактическая линейная диаграмма временных рядов, данные должны включать какой-то разделитель между наблюдениями (предположительно, дневная переменная).
@insanedshk Я добавил обновление со стратегией получения линий. Пожалуйста, дайте мне знать, если это сработает для вас!
Добавьте
group = Ano
кaes