Вложенный для цикла для различных переменных в кадре данных - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть следующее

df
P M amount date
1 1 100    03/2012
1 1 200    04/2012
1 2 100    03/2012
1 2 200    04/2012
1 3 300    03/2012
1 4 400    03/2012
...

unique(df$P) и unique(df$M) возврат [i] 1 2 3 4 5 6 7 8 9 10

Я пытаюсь построить график зависимости суммы от даты (при условии, что дата в POXIct) для каждой пары P и M, поэтому для этого я использовал вложенный цикл for.

for(i in unique(df$P)) {
for(j in unique(df$M)) {
    plot(amount ~ date, subset(df, P == i & M == j), 
         type = "l", main = print(paste("P", i, "and M", j)))
}
}

Но тогда я получил эту ошибку:

Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf

И когда я попытался выполнить дополнительные функции, оказалось, что для P = 1: 4 у каждого есть 10 вхождений в M, т.е. каждый P = 1 имеет M = 1: 10

Но когда мы достигаем P = 5, у него есть только одна пара, с M = 2, и, таким образом, цикл прерывается.

Как мне изменить цикл for для учета каждой пары?

1 Ответ

0 голосов
/ 01 сентября 2018

2 правок: (1) сделать уникальные M подмножеством текущего P во втором цикле for, и (2) построить график только при наличии достаточных данных; Я выбрал «достаточно, чтобы»> 2 »точек данных, но использую все, что работает.

for(i in unique(df$P)) {
for(j in unique(df[df$P==i, "M")) {
    if(sum(df$P==i & df$M==j)>2) {
        plot(amount ~ date, subset(df, P == i & M == j), 
            type = "l", main = print(paste("P", i, "and M", j)))
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...