我想在一个数据帧上进行聚合,并按类别进行汇总。我有这个
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,:参数必须具有相同的长度呼叫:->->;合计->聚合数据帧执行已停止
我应该如何通过索引引用列?
我是R的新手,我想我不太了解如何逐列引用数据帧。我看到的所有例子都使用名称。我无法很好地缩小搜索范围,因此提出了这个问题。
使用[1,]
,您是在设置行而不是列。使用[,1]
,可以选择第一列作为矢量。使用[1]
,您可以选择第一列作为数据帧。
aggregate(x = my_basket[3], by = my_basket[1], FUN = sum)
# ITEM_GROUP Price
#1 Dairy 305
#2 Fruit 415
#3 Vegetable 225
我们也可以在aggregate
中使用公式方法
aggregate(Price ~ ITEM_GROUP, my_basket, FUN = sum)