【问题标题】:Aggregate and sum a dataframe聚合和汇总数据框
【发布时间】:2021-05-10 14:15:57
【问题描述】:

我想汇总一个数据框,并按类别汇总。我有这个

my_basket = data.frame(ITEM_GROUP = c("Fruit","Fruit","Fruit","Fruit","Fruit","Vegetable","Vegetable","Vegetable","Vegetable","Dairy","Dairy","Dairy","Dairy","Dairy"),
                       ITEM_NAME = c("Apple","Banana","Orange","Mango","Papaya","Carrot","Potato","Brinjal","Raddish","Milk","Curd","Cheese","Milk","Paneer"),
                       Price = c(100,80,80,90,65,70,60,70,25,60,40,35,50,120),
                       Tax = c(2,4,5,6,2,3,5,1,3,4,5,6,4,3))
aggregate(x = my_basket[3,], by = list(my_basket[1,]), FUN = sum)

但它给了我一个错误告诉我

aggregate.data.frame(x = my_basket[3, ], by = list(my_basket[1, : 参数必须具有相同的长度 调用: -> -> 聚合 -> aggregate.data.frame 执行停止

我应该如何按索引引用列?

我是 R 新手,我想我不太明白如何按列引用数据框。我看到的所有示例都使用名称。我无法很好地缩小搜索范围,因此提出了这个问题。

【问题讨论】:

  • 你想要:aggregate(x = my_basket[3], by = my_basket[1], FUN = sum) 吗?
  • 我知道这很简单(但我已经尝试了很多次迭代,以至于我的思绪被吹走了)。谢谢。请创建一个答案,我会接受。

标签: r


【解决方案1】:

[1,] 是对行而不是列的子集。使用[,1],您可以选择第一列作为向量。使用[1],您可以选择第一列作为data.frame。

aggregate(x = my_basket[3], by = my_basket[1], FUN = sum)
#  ITEM_GROUP Price
#1      Dairy   305
#2      Fruit   415
#3  Vegetable   225

【讨论】:

    【解决方案2】:

    aggregate中也可以使用公式法

    aggregate(Price ~ ITEM_GROUP, my_basket, FUN = sum)
    

    【讨论】:

      猜你喜欢
      • 2019-03-25
      • 2016-06-18
      • 2021-10-27
      • 1970-01-01
      • 2023-02-21
      • 2019-11-04
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多