Я рекомендовал бы использовать фоновые изображения. Другие пути не почти как хорошие: Никакое сглаживание и бессмысленная разметка. Это не место для использования JavaScript.
Использование агрегата
:
aggregate(x$Frequency, by=list(Category=x$Category), FUN=sum)
Category x
1 First 30
2 Second 5
3 Third 34
В приведенном выше примере в списке
можно указать несколько измерений. Несколько агрегированных показателей одного и того же типа данных могут быть включены с помощью cbind
:
aggregate(cbind(x$Frequency, x$Metric2, x$Metric3) ...
(добавление комментария @thelatemail), aggregate
также имеет интерфейс формул
aggregate(Frequency ~ Category, x, sum)
Или, если вы хотите, агрегировать несколько столбцов, вы можете использовать .
обозначение (работает и для одного столбца)
aggregate(. ~ Category, x, sum)
или tapply
:
tapply(x$Frequency, x$Category, FUN=sum)
First Second Third
30 5 34
Используя эти данные:
x <- data.frame(Category=factor(c("First", "First", "First", "Second",
"Third", "Third", "Second")),
Frequency=c(10,15,5,2,14,20,3))
Это в некоторой степени связано с этим вопросом .
Вы также можете просто использовать функцию by () :
x2 <- by(x$Frequency, x$Category, sum)
do.call(rbind,as.list(x2))
Те другие пакеты (plyr, reshape) имеют то преимущество, что возвращают data.frame, но с этим стоит ознакомиться с помощью () так как это базовая функция.
library(plyr)
ddply(tbl, .(Category), summarise, sum = sum(Frequency))
Если x
- это фрейм данных с вашими данными, то следующее будет делать то, что вы хотите:
require(reshape)
recast(x, Category ~ ., fun.aggregate=sum)
Просто чтобы добавить третий вариант:
require(doBy)
summaryBy(Frequency~Category, data=yourdataframe, FUN=sum)
РЕДАКТИРОВАТЬ: это очень старый ответ. Теперь я бы рекомендовал использовать group_by
и summarize
из dplyr
, как в ответе @docendo.