r - dcast 警告 : ‘Aggregation function missing: defaulting to length’

标签 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")
并收到以下警告:

Aggregation function missing: defaulting to length


我不知道在 fun.aggregate 中放什么.有什么问题?

最佳答案

您收到此警告的原因在 fun.aggregate 的描述中。 (见 ?dcast):

aggregation function needed if variables do not identify a single observation for each output cell. Defaults to length (with a message) if needed but not specified



因此,当宽数据帧中的一个点有多个值时,需要一个聚合函数。

基于您的数据的解释:

当您使用 dcast(df, Id + Task ~ Type, value.var="Freq")你得到:
  Id Task A B
1  3    1 2 3
2  3    2 3 0
3  4    1 3 3
4  4    2 1 3

这是合乎逻辑的,因为对于 Id 的每个组合, TaskType只有 Freq 中的值.但是当你使用 dcast(df, Id ~ Type, value.var="Freq")你得到这个(包括警告信息):
Aggregation function missing: defaulting to length
  Id A B
1  3 2 2
2  4 2 2

现在,回顾一下数据的顶部:
Id  Task Type    Freq  
3     1    A       2
3     1    B       3
3     2    A       3
3     2    B       0

你明白为什么会这样。对于 Id 的每个组合和 Type Freq 中有两个值(对于 Id 3: 23 用于 A30 用于类型 B )而您只能在此位置为 type 的 6 个宽数据帧中的每个值放置一个值 |177914 | .因此 dcast想要将这些值聚合为一个值。默认聚合函数为 length ,但您可以使用其他聚合函数,例如 sum , mean , sd或通过使用 fun.aggregate 指定它们来自定义函数.

例如,使用 fun.aggregate = sum你得到:
  Id A B
1  3 5 3
2  4 4 6

现在没有警告,因为 dcast被告知当有多个值时该怎么做:返回值的总和。

关于r - dcast 警告 : ‘Aggregation function missing: defaulting to length’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33051386/

相关文章:

r - 使用 data.table [R] 查找组的模态值出现次数

r - 提取值出现在多列中的任何一列的行

r - 将同一个人的多个观察结果压缩到一行中,将倍数添加为新列

使用 cast reshape 多个变量

r - 在多个条件下合并 R 中的数据库,缺失值 (NA) 遍布各处

r - 如何获得STAN中最大似然估计的标准误差?

java - 在 MacOS 上安装 R 并从源代码编译包 - 使事情正常运行的组件和步骤

r - 不推荐使用平行坐标图 ggplot2?

r - 在不指定变量名称的情况下合并具有大写和非大写版本的变量名称的列

r - 如何使用 stat_smooth 在一个双因素图上显示一行?