2

インドの 100 地区の 52 週間の情報を含むこのようなデータフレームがあります。サンプルのデータフレームを以下に添付しますが、これは 52 週間と 100 の地区 (例: Viala、Barontha など) に拡張されます。

    "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 軸にプロットし、すべての地区に 1 つの線またはプロットをプロットすることです。誰かが助けることができれば

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")
4

1 に答える 1

1

これは、プロット部分に役立つ場合があります。ts.plot は 10 個を超えてプロットできないように見えるため、ggplot を使用しました。次に、データをプロットに適した形式で取得するだけの問題です。

#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
于 2016-01-11T09:17:34.137 に答える