Предупреждение: все еще новичок в R.
Я пытаюсь построить некоторые диаграммы (в частности, пузырьковую диаграмму) в R, которые показывают политические пожертвования для кампании. Идея состоит в том, что ось X будет отображать количество вкладов, ось Y - количество вкладов, а площадь кружков - общую сумму, внесенную на этом уровне.
Данные выглядят так:
CTRIB_NAML CTRIB_NAMF CTRIB_AMT FILER_ID
John Smith $49 123456789
Поле FILER_ID
используется для фильтрации данных по конкретному кандидату.
Я использовал следующие функции для преобразования этого фрейма данных в пузырьковую диаграмму (благодаря справке здесь и здесь ).
vals<-sort(unique(dfr$CTRIB_AMT))
sums<-tapply( dfr$CTRIB_AMT, dfr$CTRIB_AMT, sum)
counts<-tapply( dfr$CTRIB_AMT, dfr$CTRIB_AMT, length)
symbols(vals,counts, circles=sums, fg="white", bg="red", xlab="Amount of Contribution", ylab="Number of Contributions")
text(vals, counts, sums, cex=0.75)
Однако это приводит к слишком большому количеству интервалов по оси X. Всего есть несколько миллионов записей, и разделение на некоторых кандидатов может привести к огромному количеству данных. Как я могу преобразовать абсолютные вклады в диапазоны? Например, как я могу сгруппировать vals
в диапазоны, например, 0-10, 11-20, 21-30 и т. Д .?
---- EDIT ----
Следуя комментариям, я могу преобразовать vals
в числовое значение, а затем разделить на интервалы, но я не уверен, как потом объединить это обратно в синтаксис пузырьковой диаграммы.
new_vals <- as.numeric(as.character(sub("\\$","",vals)))
new_vals <- cut(new_vals,100)
Но перефразируя:
symbols(new_vals,counts, circles=sums)
Не имеет смысла - все значения выстраиваются в ноль на оси X.