我遇到与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
等)但没有成功。我觉得这应该很容易,但我继续得到错误或不正确的输出。