【发布时间】:2017-11-24 10:14:53
【问题描述】:
我有一个如下所示的数据框:
Project Week Number
Project1 01 46.0
Project2 01 46.4
Project3 01 105.0
Project1 02 70.0
Project2 02 84.0
Project3 02 34.8
Project1 03 83.0
Project3 03 37.9
编辑:
> dput(my.df)
structure(list(Project = structure(c(1L, 2L, 3L, 1L, 2L, 3L,
1L, 3L), .Label = c("Project1", "Project2", "Project3"), class = "factor"),
Week = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L), Number = c(46,
46.4, 105, 70, 84, 34.8, 83, 37.9)), .Names = c("Project",
"Week", "Number"), class = "data.frame", row.names = c(NA, -8L
))
我想计算每个项目每周的总和。
所以我使用聚合函数:
aggregate(Number ~ Project + Week, data = my.df, sum)
如您所见,第 3 周的 Project2 没有任何价值。
使用聚合函数只会将其留空。 我想要的是用 0 填充该行。
我试过了:
aggregate(Number ~ Project + Week, data = my.df, sum, na.action = 0)
和
aggregate(Number ~ Project + Week, data = my.df, sum, na.action = function(x) 0)
但没有一个工作。 有什么想法吗?
【问题讨论】:
-
请使用
dput()显示您的数据 -
好吧,聚合函数不会神奇地创建一开始就不存在的数据! :-) 您首先需要明确创建缺失组合的行,或将输出与包含所有组合的 data.Frame 合并