dcast错误:'遗漏聚合函数:默认为长度'

时间:2015-10-10 07:17:09

标签: r data.table reshape reshape2

我的df看起来像这样:

Id  Task Type    Freq  
3     1    A       2
3     1    B       3
3     2    A       3
3     2    B       0
4     1    A       3
4     1    B       3
4     2    A       1
4     2    B       3

我想通过Id重新构建并获得:

Id   A    B …  Z    
3    5    3      
4    4    6        

我试过了:

df_wide <- dcast(df, Id + Task ~ Type, value.var="Freq")

并收到错误:

  

缺少聚合函数:默认为长度

我无法弄清楚要放在fun.aggregate中的内容。有什么问题?

1 个答案:

答案 0 :(得分:0)

fun.aggregateinside value.var 列对应的相同 值 - 或值的组合 - 出现在 { 的 LHS 上时,需要

dcast {1}} 公式(例如“Id”),通过公式 RHS 中变量的组合(例如“类型”)强制进入一个单元格。

length() 中默认为 dcast 提供了丰富的信息

  • 可能表明数据中存在耦合,并且
  • 找出可能需要注意的 length > 1 个案例。

使用函数 list() 作为 fun.aggregate 可以提供更多信息,因为它显示了每种情况下涉及哪些 value.var 值:

dcast(dt, Id ~ Type, fun.aggregate = list, value.var = 'Freq')

   Id   A   B
1:  3 2,3 3,0
2:  4 3,1 3,3

基本上,表格单元格的长度为 1。因此,dcast 中的默认情况可以通过修改公式或通过实现长度为一的汇总(聚合)来解决:运算符、自定义或可用函数在每种情况下给出一个长度为一的结果并且适合该目的。