агрегировать столбец по сумме и другой столбец по среднему значению одновременно
12158 просмотра
2 ответа
Я хочу использовать агрегатную функцию для фрейма даты, но суммировать один столбец и брать среднее значение для другого столбца.
Вот пример фрейма данных
Manager Category Amount SqFt
Joe Rent 150 500
Alice Rent 250 700
Joe Utilities 50 500
Alice Utilities 75 700
Я не могу сделать что-то вроде ниже. Есть ли простой способ сделать это?
Avg_CPSF=aggregate(cbind(Amount,SqFt)~Manager,data=aaa,FUN=c(sum,mean)
В конце концов мне нужно
Manager Amount SqFT
Joe 200 500
Alice 325 700
так что я могу рассчитать стоимость за квадратный фут, выполнив Amount / SqFT
Автор: M.Adams Источник Размещён: 13.11.2019 11:32Ответы (2)
20 плюса
Есть несколько способов сделать это. Вот некоторые из них, которые мне нравятся (все при условии, что мы начинаем с data.frame
имени "mydf"):
Использование ave
иunique
unique(within(mydf, {
Amount <- ave(Amount, Manager, FUN = sum)
SqFt <- ave(SqFt, Manager, FUN = mean)
rm(Category)
}))
# Manager Amount SqFt
# 1 Joe 200 500
# 2 Alice 325 700
Использование data.table
:
library(data.table)
DT <- data.table(mydf)
DT[, list(Amount = sum(Amount), SqFt = mean(SqFt)), by = "Manager"]
# Manager Amount SqFt
# 1: Joe 200 500
# 2: Alice 325 700
Использование "sqldf":
library(sqldf)
sqldf("select Manager, sum(Amount) `Amount`,
avg(SqFt) `SqFt` from mydf group by Manager")
Использование aggregate
и merge
:
merge(aggregate(Amount ~ Manager, mydf, sum),
aggregate(SqFt ~ Manager, mydf, mean))
Автор: A5C1D2H2I1M1N2O1R2T1
Размещён: 20.02.2013 04:18
4 плюса
Вы можете использовать summarise
функцию ddply
в plyr
пакете:
library(plyr)
ddply(mtcars,.(cyl),summarise,TotalWt=sum(wt),AveHP=mean(hp))
cyl TotalWt AveHP
1 4 25.143 82.63636
2 6 21.820 122.28571
3 8 55.989 209.21429
Автор: James
Размещён: 20.02.2013 04:22
Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- r Расчет скользящей средней
- r Режим Emacs ESS - вкладка для области комментариев
- r Преобразование данных из многих строк во многие столбцы
- r Проверить, содержит ли вектор данный элемент
- r Поиск всех позиций для нескольких элементов в векторе
- aggregate Как использовать GROUP BY для объединения строк в MySQL?
- aggregate Как проверить существующие агрегатные функции в Postgres?
- aggregate Группировать по нескольким столбцам
- aggregate Я нарушаю свои совокупные границы?
- aggregate Вопрос эффективности Linq - foreach против агрегатов
- aggregate SQL Server: SUM () из нескольких строк, включая предложения where
- aggregate Питонический способ для объединения массивов (NumPy или нет)
- aggregate Что такое агрегаты и POD и как / почему они особенные?
- aggregate Linq to Objects - возвращает пары чисел из списка чисел
- aggregate C # Linq Group By по нескольким столбцам