我有7200万观察数据框。它有两列,my_id
和my_rand
个变量。
数据框有大约600万个唯一my_id
。我需要按my_rank
计算平均值my_id
(按my_id
分组)。
我尝试运行上面的常规R命令,但它似乎冻结了R(可能数据太大而无法适应内存)。
avg_rank_by_id<-aggregate(dataframe1["my_rank"],by=dataframe1["my_id"], mean, na.rm=TRUE)
有没有办法运行Revo Scale R,例如rxCube
等来达到目标?我在Linux上运行。它尝试下面,但得到了错误。
我是R的新手。除了Revo Scale R之外,还有另一款高性能计算开源R套件吗?感谢。
acct_avg_rank <- rxCube( N(m13_rank)~acct_id, data=payee_merge, means=TRUE, returnDataFrame=TRUE)
所有自变量必须是rxCube
和rxCrossTabs
的因子:"acct_id"
。
使用F(x)
声明连续变量x
将被视为一个因素。
rxCall错误(&#34; RxCrossTabs&#34;,params):
电话:rxCube - &gt; rxCubeBase - &gt; rxCall - &gt; .CALL
答案 0 :(得分:0)
您导入的acct_id
似乎被视为numeric
,而且需要factor
。
您有三种选择:
1.再次导入并使用colClasses = c(acct_id = "factor")
2.使用rxFactors
将acct_id
更改为factor
3.更改为公式中的factor
。
acct_avg_rank <- rxCube(N(m13_rank) ~ F(acct_id), data=payee_merge,
means=TRUE, returnDataFrame=TRUE)