Punktem wyjścia są dane ze strony ZKDP (w formacie Excel.) Ponieważ pobieram je od pewnego czasu mam tego więcej niż jest na ww. stronie bo od stycznia 2015 do lipca 2017, czyli 31 plików. Ręczna konwersja byłaby zatem ciut za bardzo czasochłonna.
for i in *.xls do oocalc --headless --convert-to csv $i ; # albo ssconvert -v $i `basename $i .xls`.csv ; done # Wyciągam dane dotyczące sprzedaży ogółem dla SE grep 'Super Ex' *.csv | awk -F ',' '{print $7} ' > se_sales.csv # Analogicznie dla innych tytułów
Uwaga: program ssconvert
znajduje się w pakiecie gnumeric
, oocalc
to oczywiście składni Libre/OpenOffice.
Wielkości sprzedaży dla trzech najpoczytniejszych tytułów pokazują wykresy liniowe (pierwszy w tys egz. a drugi w procentach nakładu ze stycznia 2015 r.)
library(ggplot2) library(reshape2) df <- read.csv("newspaper_sales_2015-17.csv", sep = ';', header=T, na.string="NA"); meltdf <- melt(df,id="month") ggplot(meltdf,aes(x=month, y=value, colour=variable, group=variable)) + geom_line() + ylab(label="sales [ths]") + theme(legend.title=element_blank()) + scale_x_discrete (breaks=c("2015-01-01", "2015-06-01", "2016-01-01", "2016-06-01", "2017-01-01", "2017-06-01"), labels=c("2015-01", "2015-06", "2016-01", "2016-06", "2017-01", "2017-06") ) # https://stackoverflow.com/questions/10085806/extracting-specific-columns-from-a-data-frame obs <- df[,c("month")] normalize <- function(x) { return (x /x[1] * 100 ) } dfN <- as.data.frame(lapply(df[-1], normalize)) # https://stackoverflow.com/questions/10150579/adding-a-column-to-a-data-frame dfN["month"] <- obs str(dfN) meltdf <- melt(dfN,id="month") # https://www.r-bloggers.com/what-is-a-linear-trend-by-the-way/ pN <- ggplot(meltdf, aes(x=month, y=value, colour=variable, group=variable)) + geom_line() + ylab(label="sales [ths]") + theme(legend.title=element_blank()) + stat_smooth(method = "lm", se=F) + scale_x_discrete (breaks=c("2015-01-01", "2015-06-01", "2016-01-01", "2016-06-01", "2017-01-01", "2017-06-01"), labels=c("2015-01", "2015-06", "2016-01", "2016-06", "2017-01", "2017-06") ) pN
Spadek widoczny na wykresach można określić liczbowo na przykład szacując linię trendu:
# Trend liniowy # http://t-redactyl.io/blog/2016/05/creating-plots-in-r-using-ggplot2-part-11-linear-regression-plots.html # http://r-statistics.co/Time-Series-Analysis-With-R.html seq = c (1:nrow(dfN)) dfN["trend"] <- seq trendL.gw <- lm(data=dfN, gw ~ trend ) trendL.fakt <- lm(data=dfN, fakt ~ trend ) trendL.se <- lm(data=dfN, se ~ trend ) trendL.gw trendL.fakt trendL.se
Współczynniki trendu dla GW, Faktu i SE są odpowiednio równe -1.114 -0.6415 -0.4301, co należy interpretować następująco: przeciętnie z miesiąca na miesiąc nakład spada o 1,11%, 0,64% oraz 0,43% nakładu ze stycznia 2015 r., odpowiednio dla GW, Faktu i SuperExpresu.
Dane i wyniki są tutaj
Ciekawy wpis
OdpowiedzUsuń