Я пытаюсь выяснить, как создавать бункеры с минимальным размером выборки, который также учитывает значения в определенном столбце.Сочетание данных по значениям строк с минимальным размером выборки
Итак, в фиктивных данных, приведенных ниже, я хочу создать бункеры с минимальным количеством из 6 образцов в них, но если в ящике есть строка с определенным значением из столбца a, я хочу, чтобы этот bin также включал все остальные строки с тем же значением. Я также не хочу, чтобы в одном ящике содержалось только одно уникальное значение из строки a. Затем я хочу, чтобы на выходе была строка со средним значением уникальных значений в столбце a, среднее значение всех значений в столбце b и столбец с размером выборки.
df<-data.frame(a=c(1,1,2,2,2,3,3,3,3,4,4,5,6,6,6,7,7,7,7,7,7,8,8,8,9,9,9,9,10,10,10),
b=c(12,13,11,12,12,11,15,13,12,11,14,15,11,14,12,11,14,12,13,15,11,11,12,13,14,16,14,13,15,13,15))
Я хочу, чтобы выход выглядеть примерно так:
mean.a mean.b n
1 2.0 12.33333 9
2 5.0 12.83333 6
3 7.0 12.66667 6
4 8.5 13.28571 7
Это то, что я до сих пор:
x<-df
final<-NULL
for(i in 1:16){
x1<-x[1:6,]
x2<-x[-c(1:6),]
x3<-rbind(x1, x2[x2$a==x1$a[6],])
n<-nrow(x3)
y<-mean(x3$b)
z<-mean(unique(x3$a))
f<-data.frame(mean.a=z, mean.b=y, n=n)
final<-rbind(final,f)
x<-x[-c(1:n),]
}
final<-final[complete.cases(final),]
Проблема у меня в том, что я не могу выяснить, как не иметь один бит с одним уникальным значением в столбце a. Например, в третьем бункере все 6 строк имеют значение. A $ a = 7, но я хотел бы добавить следующую последовательную строку и все строки с этим значением строки в столбце a в этот бит (который будет представлять все строки, которые имеют среднее значение. a $ a = 8 в этом случае).
Кроме того, я не могу понять, как получить цикл, чтобы продолжить цикл, не имея 1: номер в верхней части, а затем просто удаляя строки с NA после этого, это не огромная сделка, но это причина в том, что это беспорядочно.
Я не привязан к этой петле любыми средствами, и если есть более простой способ ответить на этот вопрос, я все для этого!
Спасибо, это сработало Великий! – tnl393