цикл for для уникальных значений с более чем 1 вхождением - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть вопросник (да, он один и тот же из всех моих вопросов ... Цикл for для нескольких графов Ликерта возвращает НИЧЕГО )

Теперь я оцениваюответы по географическому региону (11 регионов), которые я хочу сделать с помощью цикла for.

Пакет liker, использованный для создания моих графиков, не будет строить график для <= 1 ответов, не относящихся к NA.Так что ни один из них не работает должным образом: </p>

Мои (гипотетические) данные выглядят примерно так (-9 обозначает NA):

 M1 M2 M3 M4 M5 M6 M7 M8 M9 group
1   1  5  5  1  2  4  4 -9  5     1
2   2  4  5  1  2  4  4  1  5     1
3   3  3  5  1  2  4  3  1  3     1
4   1  5  5  1  2  4  4 -9  5     1
5   2  4  5  1  2  4  4  1  5     2
6   1  5  5  1  2  4  4 -9  5     2
7   2  4  5  1  2  4  4  1  5     2
8   3  3  5  1  2  4  3  1  3     3
9   4  5  5  1  2  4 -9  1  3     3
10  5  5 -9  1  3  4  4  2 -9     3
11  3  3  5  1  2  4  3  1  3     3
12  4  5  5  1  2  4 -9  1  3     4
13  5  5 -9  1  3  4  4  2 -9     3
14  5  5 -9  1  3  4  4  2 -9     3
15  3  3  5  1  2  4  3  1  3     4
16  1  5  5  1  2  4  4 -9  5     4
17  2  4  5  1  2  4  4  1  5     4
18  1  5  5  1  2  4  4 -9  5     4
19  2  4  5  1  2  4  4  1  5     4
20  3  3  5  1  2  4  3  1  3     4
21  -9 -9 -9 -9 -9 -9 -9 -9 -9    5
22  1  1  1  1  1  1  1  1  1     6

Эти две версии цикла for не будут работать:

for (i in 1:5)
for (i in unique(mydata$group))

потому что: ошибка в FUN (X [[i]], ...): объект 'pos' не найден

Я считаю, что группа 5 содержит только N / Asи группа 6 содержит только один пример.

Поэтому мне нужна функция, выполняемая через цикл for, которая создает только значения для i, которые имеют более 2 строк, не являющихся N / A.Есть идеи?

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете спросить внутри цикла, если задано условие, что существует более 2 строк, которые не являются N / A.

mydata <- read.table(text = "
 M1 M2 M3 M4 M5 M6 M7 M8 M9 group
1   1  5  5  1  2  4  4 -9  5     1
2   2  4  5  1  2  4  4  1  5     1
3   3  3  5  1  2  4  3  1  3     1
4   1  5  5  1  2  4  4 -9  5     1
5   2  4  5  1  2  4  4  1  5     2
6   1  5  5  1  2  4  4 -9  5     2
7   2  4  5  1  2  4  4  1  5     2
8   3  3  5  1  2  4  3  1  3     3
9   4  5  5  1  2  4 -9  1  3     3
10  5  5 -9  1  3  4  4  2 -9     3
11  3  3  5  1  2  4  3  1  3     3
12  4  5  5  1  2  4 -9  1  3     4
13  5  5 -9  1  3  4  4  2 -9     3
14  5  5 -9  1  3  4  4  2 -9     3
15  3  3  5  1  2  4  3  1  3     4
16  1  5  5  1  2  4  4 -9  5     4
17  2  4  5  1  2  4  4  1  5     4
18  1  5  5  1  2  4  4 -9  5     4
19  2  4  5  1  2  4  4  1  5     4
20  3  3  5  1  2  4  3  1  3     4
21  -9 -9 -9 -9 -9 -9 -9 -9 -9    5
22  1  1  1  1  1  1  1  1  1     6
", header=T, na.strings="-9")

for (i in unique(mydata$group)) {
  x <- mydata[mydata$group==i,]
  if(sum(complete.cases(x)) > 2) { #more than 2 rows which are non-N/A?
    plot(x[1:9])
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...