電視節目收視率分析

場景

    • 調查 50 位觀眾,4 個著名八點檔電視節目(Millionaire, Frasier, Chicago Hope, Charmed),收視資料如下:

問題

    • 求算不同電視節目收視者數量分佈(Frequency Distribution)

    • 求算不同電視節目收視者百分比分佈(Percentage Frequency Distribution)

GNU R

source("Statistics.R") ######################################################## # 4 # 已知 myPrograms <- c("Millionaire", "Frasier", "Chicago Hope", "Charmed") myData <- c( "Millionaire", "Millionaire", "Millionaire", "Frasier", "Charmed", "Frasier", "Frasier", "Millionaire", "Millionaire", "Frasier", "Frasier", "Millionaire", "Millionaire", "Chicago Hope", "Millionaire", "Charmed", "Millionaire", "Frasier", "Chicago Hope", "Millionaire", "Chicago Hope", "Charmed", "Frasier", "Frasier", "Millionaire", "Millionaire", "Frasier", "Millionaire", "Millionaire", "Chicago Hope", "Frasier", "Millionaire", "Millionaire", "Charmed", "Chicago Hope", "Chicago Hope", "Millionaire", "Millionaire", "Millionaire", "Millionaire", "Frasier", "Frasier", "Millionaire", "Frasier", "Frasier", "Millionaire", "Millionaire", "Chicago Hope", "Millionaire", "Frasier" ) # 求算 myTotalCount <- length(myData) myDataStat <- c(1:length(myPrograms)) names(myDataStat) <- myPrograms for (myViewerProgram in myData) { if (myViewerProgram == "Millionaire") { myDataStat[1] <- myDataStat[1] + 1 next } if (myViewerProgram == "Frasier") { myDataStat[2] <- myDataStat[2] + 1 next } if (myViewerProgram == "Chicago Hope") { myDataStat[3] <- myDataStat[3] + 1 next } if (myViewerProgram == "Charmed") { myDataStat[4] <- myDataStat[4] + 1 next } } print(myDataStat) print(summary(myDataStat)) myDataFrame <- data.frame(myPrograms, myDataStat, row.names=NULL) names(myDataFrame)[1] <- "電視節目" names(myDataFrame)[2] <- "觀眾數" print(myDataFrame) myFrequency <- myDataStat / myTotalCount myDataFrame <- data.frame(myPrograms, myFrequency, row.names=NULL) names(myDataFrame)[1] <- "電視節目" names(myDataFrame)[2] <- "觀眾數相對頻率" print(myDataFrame) myPercentageFrequency <- 100 * myFrequency myDataFrame <- data.frame(myPrograms, myPercentageFrequency, row.names=NULL) names(myDataFrame)[1] <- "電視節目" names(myDataFrame)[2] <- "觀眾數頻率 %" print(myDataFrame) par(mfrow=c(3,2)) pie(myDataStat, main="電視節目觀眾數餅圖", labels=names(myDataStat)) dotchart(myDataStat, main="電視節目觀眾數點圖", xlab="觀眾數") barplot(myDataStat, main="電視節目觀眾數長條圖", xlab="電視節目", ylab="觀眾數", names.arg=myPrograms) hist(myDataStat, main="電視節目觀眾數直方圖", xlab="電視節目", ylab="觀眾數", nclass=4) boxplot(myDataStat, main="電視節目觀眾數盒狀圖", horizontal=TRUE)

解答

Millionaire Frasier Chicago Hope Charmed 25 17 10 8 Min. 1st Qu. Median Mean 3rd Qu. Max. 8.0 9.5 13.5 15.0 19.0 25.0 電視節目 觀眾數 1 Millionaire 25 2 Frasier 17 3 Chicago Hope 10 4 Charmed 8 電視節目 觀眾數相對頻率 1 Millionaire 0.50 2 Frasier 0.34 3 Chicago Hope 0.20 4 Charmed 0.16 電視節目 觀眾數頻率 % 1 Millionaire 50 2 Frasier 34 3 Chicago Hope 20 4 Charmed 16