【发布时间】:2020-05-22 17:32:17
【问题描述】:
我有一个大而杂乱的数据集,但想要完成一件简单的事情。本质上,我想根据两列的每个组合填充一个小标题,并对第三列求和。
作为一个假设的例子,假设每个观察都有 company_name(Wendys、BK、McDonalds)、food_option(汉堡、薯条、frosty)和 total_spending(以 $ 为单位)。我想用公司、食物和总数制作一个 9x3 的小标题,作为每次观察的总和。到目前为止,这是我的代码:
df_table <- df %>%
group_by(company_name, food_option) %>%
summarize(total= sum(total_spending))
company_name food_option total
<chr> <chr> <dbl>
1 Wendys Burgers 757
2 Wendys Fries 140
3 Wendys Frosty 98
4 McDonalds Burgers 1044
5 McDonalds Fries 148
6 BK Burgers 669
7 BK Fries 38
问题在于,麦当劳以“Frosty”作为 food_option 的观察结果为零。因此,我得到了一个部分表。我想用一行显示:
8 McDonalds Frosty 0
9 BK Frosty 0
我知道我可以手动添加行,但实际的数据集有一百多个组合,所以会很繁琐和复杂。此外,我不断修改上游数据,我希望代码能够自动正确填充。
非常感谢任何可以提供帮助的人。这个论坛真是天赐之物,真的很感谢你们。
【问题讨论】:
-
在最后尝试使用这个
... %>% complete(company_name, food_option, fill=list(total = 0))。这是一个tidyr函数。 -
是的,我走了那条路,但由于某种原因,它仍然返回完全相同的表。我想可能是因为 R 不确定要填写什么?
-
对我来说,它适用于您发布的示例。如果它不知道要填充什么,您将只获得不存在的组合的 NA 值。所以问题一定来自其他地方。我将在下面发布答案,以便您再次查看。