我有(a,b,c)之类的数据

a b c
1 2 1
2 3 1
9 2 2
1 6 2


其中,“ a”范围分为n个(例如3个)相等的部分,聚合函数计算b个值(例如max),并按“ c”个分组。

所以输出看起来像

a_bin  b_m(c=1) b_m(c=2)
1-3     3          6
4-6     NaN        NaN
7-9     NaN        2


这是MxN,其中M =档数,N =唯一的c个样本或所有范围

我该如何处理?任何R包都能帮助我吗?

最佳答案

会有更简单的方法。

如果您的数据集是dat

res <- sapply(split(dat[, -3], dat$c), function(x) {
a_bin <- with(x, cut(a, breaks = c(1, 3, 6, 9), include.lowest = T, labels = c("1-3",
    "4-6", "7-9")))
c(by(x$b, a_bin, FUN = max))
})
res1 <- setNames(data.frame(row.names(res), res),
        c("a_bin", "b_m(c=1)", "b_m(c=2)"))
row.names(res1) <- 1:nrow(res1)

 res1
 a_bin b_m(c=1) b_m(c=2)
1   1-3        3        6
2   4-6       NA       NA
3   7-9       NA        2

08-20 01:58