使用按第三列分组的2列应用函数

时间:2016-02-10 15:33:55

标签: r function loops

我遇到与in this post描述的问题类似的问题,我希望将函数应用于按第三列的每个级别分组的2列。我已尝试过这篇文章中介绍的两种解决方案,但都没有正常工作。

以下是我的数据框CMdata的前15行:

Interval NASC Depth_mean Form
1   0   2.976   0
1   0   4.992   0
1   0   7.008   0
1   0   9.024   0
1   0   11.04   0
1   0   12.96   0
1   0   14.976  0
2   0   2.976   0
2   0   4.992   0
2   0   7.008   0
2   0   9.024   0
2   0   11.04   0
2   0   12.96   0
2   0   14.976  0
3   0   2.976   0

对于每个Interval,我想取Form的总和除以NASC的总和(注意:只有NASC和Form列的开头是0)。为此,我首先创建了一个简单的函数来进行求和划分:

CMfunc <- function(arg1,arg2){
    sum(arg1)/sum(arg2)
}

现在我想将这个应用到每个Interval,1到2104.我尝试了上面文章中提到的解决方案,如下所示:

dt = data.table(CMdata)
CM <- dt[,CMfunc(CMdata$form,CMdata$NASC),by=CMdata$Interval]

但是对于创建的新列中的每一行,输出只是23.49。我还尝试了各种循环函数(tapply等)但没有成功。我觉得这应该很容易,但我继续得到错误或不正确的输出。

0 个答案:

没有答案