我有(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