切割几个变量,为每个变量使用几个不同数量的箱

我有一个如下所示的数据集:

ID  a   b
ID1 0.1 20.3
ID2 0.2 21.6
ID3 1.2 1.5
etc.

我想将这些值分组为相同大小的组.这可以通过以下方式完成:

data$bin1 <- as.numeric(cut2(data$b,g=50))

这将获取b列中的值,并将它们分成50个大小相等的组:

ID  a   b    bin
ID1 0.1 20.3 2
ID2 0.2 21.6 2
ID3 1.2 1.5  1
etc.

但是,我需要多次使用不同数量的组.我试过了:

for (i in 1:5){
data$bin[i] <- as.numeric(cut2(data$values,g=i*50))
}

但后来我收到了这个警告:“要替换的项目数量不是替换长度的倍数”.

在对值进行分组后,我想计算每个组中的均值,这可以通过以下方式完成:

means <- ddply(data,.(bin),summarise,mean.a=mean(a),mean.b=mean(b))

我想为所有的箱子尺寸做这个.我需要使用另一个for循环吗?或者它可以在第一个循环中实现吗?

最佳答案

for (i in 1:5){
    data[paste('bin', i, sep = '')] <- as.numeric(cut2(data$values,g=i*50))
}

将使用粘贴将bin1列添加到bin5到您的数据框.

点赞