Составление еженедельного временного ряда для нескольких районов вместе

У меня есть такой фрейм данных, который содержит информацию о 52 неделях по 100 округам Индии. Образец фрейма данных прилагается ниже, однако он распространяется на 52 недели и 100 округов (например, Виала, Баронта и т. Д.).

    "Block" 01 Jan/ 05 Jan  06 Jan/ 12 Jan  13 Jan/ 19 Jan  20 Jan/ 26 Jan
        1   2   3   4
Viala   9   11  4   0
Barontha    0   0   0   0
Dasau   4   29  17  9
Kwanu   2   123 62  11

Я хочу представить это как фрейм данных временного ряда, а также построить его. Я использовал следующий код:

stools=read.csv("~/stoolwithdehyd.csv",header=TRUE)
stools[is.na(stools)] <- 0
stooltimeseries <- ts(stools, frequency=52)
plot.ts(stooltimeseries)

Но я получил следующую ошибку

Error in plotts(x = x, y = y, plot.type = plot.type, xy.labels = xy.labels,  : 
cannot plot more than 10 series as "multiple"

Я увидел другого пользователя, страдающего от аналогичной ошибки, и изменил свой код, используя данный ответ на

library(reshape2)    
mm = melt(stooltimeseries, id='id')
library(ggplot2)
ggplot(mm)+geom_line(aes(x=variable, y=value, group=id, color=id))
plot.ts(stooltimeseries)

Временной ряд был нанесен, но не в соответствии с тем, что я хотел, а также получил ошибку

Error in eval(expr, envir, enclos) : object 'variable' not found

Изображение полученного мной временного ряда

Однако я хочу построить числа на оси y с соответствующими неделями на оси x и иметь одну линию или график для каждого района. Если бы кто-нибудь мог помочь

dput(stools[1:4,1:5])

structure(list(Block. = structure(c(1L, 103L, 19L, 28L), .Label = c(" ", 
" Balawala", " Bhaniawala", " Doiwala", " Dudhli", " Herbetpur", 
" Raiwala", " Ranipokhari", " SPD Indira Nagar Colony", " UHP D.L Road", 
" UHP Dalanwala", " UHP Dobhalwala", " UHP Khurbura", " UHP Patel Nagar", 
"Ajabpur", "Asan Bag", "Ashtad", "Badripur", "Barontha", "Bhagwampur", 
"Bhatta", "Bhogpur", "Buraswa", "Byas Bhoor", "Chadroti", "Charba", 
"Chidderwala", "Dasau", "Dhaki", "Dhakrani", "Dhalipur", "Dharmawala", 
"Dilau", "Dwara Samoli", "Fatehpur", "garhi", "Gaziawala", "Gumaniwala", 
"Hakikat Rai Nagar", "Hariyawala khurd", "Jahdi", "Jakhan", "Jamnipur", 
"Jassowala", "Johdi", "Juddo", "Kamla", "Kanwali", "Kaulagarh", 
"Keinchiwala", "Kettri", "Khatar", "Khunna", "Korba", "Kunjagrant", 
"Kwansi", "Kwanu", "Lelta", "Mairavana", "Majra", "Majri", "Malsi", 
"Manthat", "Matiyawa", "MCH  Herbetpur", "MCH Rudrapur", "Mehuwala", 
"Mohana", "Naraya", "Nehrugram", "Pashchimwala", "Pelion ", "PHC Kalsi", 
"Pipaya", "Rajawala", "Rampur", "Rikhad", "Rural Health Center", 
"Sabhawala", "Sahaspur", "Sahiya", "Samalta", "Sauda Saroli", 
"Sawra", "Seinj", "Selaqui", "Sewala Kala", "Sherpur", "SPD Adhoiwala", 
"SPD Bhagat Singh Colony", "Sureu", "Telpura", "Thano", "Tyuni", 
"UHC Ajabpur", "UHC Kanwali/Seemadwar", "UHC Kishan Nagar", "UHC Majra", 
"UHC Rece Course", "UHP Ballupur", "UHP Dharampur", "UHP Reetha Mandi", 
"Viala", "Vitrali"), class = "factor"), X01.Jan..05.Jan = c(1, 
0, 0, 0), X06.Jan..12.Jan = c(2, 0, 0, 0), X13.Jan..19.Jan = c(3, 
0, 0, 0), X20.Jan..26.Jan = c(4, 0, 0, 0)), .Names = c("Block.", 
"X01.Jan..05.Jan", "X06.Jan..12.Jan", "X13.Jan..19.Jan", "X20.Jan..26.Jan"
), row.names = c(NA, 4L), class = "data.frame")

person amankedia    schedule 11.01.2016    source источник
comment
Не могли бы вы поставить dput своих данных? Их нелегко импортировать путем копирования и вставки. И вызов ggplot тоже не дал желаемых результатов?   -  person Heroka    schedule 11.01.2016
comment
@Heroka, dput превышает максимальный предел символов на 21000 символов, поэтому я соответствующим образом отредактировал фрейм данных, при выполнении ggplot нет ошибки, что Ошибка в eval (expr, envir, enclos): объект 'переменная' не найдена   -  person amankedia    schedule 11.01.2016
comment
Тогда, пожалуйста, сделайте 'dput (head (mydata))'?   -  person Heroka    schedule 11.01.2016
comment
@Heroka все еще слишком длинна на 4267 символов   -  person amankedia    schedule 11.01.2016
comment
dput (mydata ([1: 4,1: 5]))?   -  person Heroka    schedule 11.01.2016
comment
@Heroka Я добавил это в раздел вопросов   -  person amankedia    schedule 11.01.2016


Ответы (1)


Это может помочь при рисовании. Я использовал ggplot, поскольку ts.plot, похоже, не может отобразить более 10. Тогда это просто вопрос получения ваших данных в правильном формате для построения графика.

#make new dataframe with week numbers as column headers
stools2 <- stools[-1,]
colnames(stools2) <- c("Block",stools[1,][-1])

#now make things up, as all data are zero in your example
set.seed(1)
stools2[stools2==0] <- sample(1:12,sum(stools2==0),T)

#melt the data
library(reshape2)
stools_melt <- melt(stools2, id.var="Block", variable.name="week")
stools_melt$week <- as.numeric(stools_melt$week)

#plot
p1 <- ggplot(stools_melt, aes(x=week,y=value,group=Block, color=Block)) + geom_line()
p1
person Heroka    schedule 11.01.2016
comment
спасибо, работает нормально. У меня вопрос, не могли бы вы объяснить это colnames (stools2) ‹- c (Block, stools [1,] [- 1]), особенно использование индексов [1,] [- 1] - person amankedia; 11.01.2016