lapply sapply , cut ( "n_int" ). melt ed .
aggregate, "L1" ( ), "cut_set" ( , 2 4 ) "" ( ).
d1 <- data.frame(a = 1:10,
b = seq(100, 1000, len = 10))
d1
n_int <- 2 * 1:2
library(reshape2)
d2 <- melt(lapply(d1, function(x){
data.frame(x, sapply(n_int, function(i){
as.integer(cut(x, i))
})
)
}),
id.vars = "x", variable.name = "cut_set", value.name = "interval")
d3 <- aggregate(x ~ L1 + cut_set + interval, data = d2, mean)
d3[order(d3$L1, d3$cut_set, d3$interval), ]
: dplyr:
library(dplyr)
d1 %>%
melt(id.vars = NULL) %>%
group_by(variable) %>%
do(data.frame(., sapply(n_int, function(i) as.integer(cut(.$value, i))))) %>%
melt(id.vars = c("variable", "value"), variable.name = "cut_set", value.name = "interval") %>%
group_by(variable, cut_set, interval) %>%
summarise(mean = mean(value))