Проблема с Barplot Создание с циклом - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть набор данных (результаты опроса), который разделен на 38 регионов, и я хочу написать цикл для создания процентного графика ответов для каждого конкретного региона.

Итак, если я напишуследующий код (обозначающий «i» с «6», поскольку номер региона равен «6», где «psu» - переменная, отвечающая за номер региона), все работает нормально.

reg <- subset(rlmsq, psu == "6")

    s <- c(sum(reg$employee == "1", na.rm = TRUE)*100/sum(reg$employee !="", na.rm = TRUE),
           sum(reg$employee == "2", na.rm = TRUE)*(100/2)/sum(reg$employee !="", na.rm = TRUE),
           sum(reg$employee_affect == "1", na.rm = TRUE)*100/sum(reg$employee_affect !="", na.rm = TRUE),
           sum(reg$employee_affect == "2", na.rm = TRUE)*(100/2)/sum(reg$employee_affect !="", na.rm = TRUE),
           sum(reg$employee_affect == "3", na.rm = TRUE)*(100/3)/sum(reg$employee_affect !="", na.rm = TRUE),
           sum(reg$employee_affect == "7", na.rm = TRUE)*(100/7)/sum(reg$employee_affect !="", na.rm = TRUE),
           sum(reg$employee_affect == "8", na.rm = TRUE)*(100/8)/sum(reg$employee_affect !="", na.rm = TRUE))

    barplot(s,
            main = "ANSW. #3_1 ",              
            xlab = "Answers subpoints",         
            ylab = "Percetage",              
            ylim = c(0, 100),
            names.arg = c("Yes", "No",
                          "Not-at-all", "Slightly",
                          "Strongly", "DTA",
                          "Refusal"),
            col = "blue",  cex.names = 0.6)

Но как только я пытаюсьчтобы создать цикл и использовать «i» в качестве числа регионов (следующего), единственное, что я получаю, это пустой график, так как нет данных.

par(mar=c(2,2,2,2))
par(mfrow=c(5,8))

for (i in 1:38) {

reg <- subset(rlmsq, psu == "i")

s <- c(sum(reg$employee == "1", na.rm = TRUE)*100/sum(reg$employee !="", na.rm = TRUE),
       sum(reg$employee == "2", na.rm = TRUE)*(100/2)/sum(reg$employee !="", na.rm = TRUE),
       sum(reg$employee_affect == "1", na.rm = TRUE)*100/sum(reg$employee_affect !="", na.rm = TRUE),
       sum(reg$employee_affect == "2", na.rm = TRUE)*(100/2)/sum(reg$employee_affect !="", na.rm = TRUE),
       sum(reg$employee_affect == "3", na.rm = TRUE)*(100/3)/sum(reg$employee_affect !="", na.rm = TRUE),
       sum(reg$employee_affect == "7", na.rm = TRUE)*(100/7)/sum(reg$employee_affect !="", na.rm = TRUE),
       sum(reg$employee_affect == "8", na.rm = TRUE)*(100/8)/sum(reg$employee_affect !="", na.rm = TRUE))

barplot(s,
        main = "ANSW. #3_1 ",              
        xlab = "Answers subpoints",         
        ylab = "Percetage",              
        ylim = c(0, 100),
        names.arg = c("Yes", "No",
                      "Not-at-all", "Slightly",
                      "Strongly", "DTA",
                      "Refusal"),
            col = "blue",  cex.names = 0.6)
}

Знаете ли вы, что может бытьпроблема?

enter image description here

...