我正在处理名为“all
”的产品的data.frame,其第一个变量all$V1
是产品系列。每个产品系列有几行,即length(levels(all$V1))
< length(all$V1)
。R - 在循环还是向量中遍历data.frame的级别?
我想遍历产品系列“p
”中的data.frame和process。我是R新手,所以当我可以做矢量或者循环时,我还没有完全掌握。此刻,我可以遍历并获得由子组:
for (i in levels (all$V1)){
p = all[which(all[,'V1'] == i), ];
calculateStuff(p);
}
这是做到这一点的方式,或者是有与apply
什么这样做的常规矢量方式?只有几千行,所以性能增益可能是可以忽略不计的,但我想为更大的数据传输开辟良好的习惯。
查看'aggregate'。它基本上是'tapply'的包装器,并为data.frame的子集计算汇总统计信息。有这样做的不同方式,“聚合”是否合适取决于你想要计算的东西。但这是一个好的开始,使用起来非常方便。 – SimonG 2014-10-02 14:43:42
有十几种方法可以做到这一点。通常你会使用实现“拆分应用组合”概念的功能。看看软件包plyr,dplyr,data.table。 – Roland 2014-10-02 14:56:41