Непонятно, что вы подразумеваете под "соответствующими значениями другого столбца". Первую часть легко выполнить с помощью аргумента g (# of groups):
dfrm$Agrp <- cut2(dfrm$A, g=trunc(length(dfrm$A)/25) )
Вы можете агрегировать средние или средние значения B в Agrp, используя tapply
или ave
или одну из сводных функций Hmisc. В одном из сегодняшних вопросов есть несколько проработанных примеров: Как получить Сводную статистику по группе , а также много других примеров использования этих функций или aggregate
или функций pkg: plyr.
Учитывая, что число значений B не обязательно будет постоянным в разных группах, я могу подумать, что для доставки отдельных значений по A-grouped-value будет split
. Я добавил дополнительную строку, чтобы проиллюстрировать, что для неравномерного разбиения может потребоваться вернуть список, а не более «прямоугольный» объект:
dat <- read.table(text="A B
-10.834510 1.680173
11.012966 1.866603
-16.491415 1.868667
-14.485036 1.900002
2.629104 1.960929
-3.597291 2.005348\n 3.5943 3.796", header=TRUE)
dat$Agrp <- cut2(dat$A, g=trunc(length(dat$A)/3) )
split(dat$B, dat$Agrp)
#-----
$`[-16.49, 2.63)`
[1] 1.680173 1.868667 1.900002 2.005348
$`[ 2.63,11.01]`
[1] 1.866603 1.960929 3.796000
Если вы хотите, чтобы вектор значений, по которым проводилось разбиение, мог быть выполнен с помощью регулярного выражения в levels(dat$Agrp)
.