The following is summary information on complete cases with salaries over $10,000.
Load required libraries.
library(proto)
library(gsubfn)
library(RSQLite)
library(knitr)
library(data.table)
library(plyr)
library(dplyr)
library(sqldf)
library(ggplot2)
library(RColorBrewer)
library(grid)
library(ggrepel)
library(plotly)
library(kableExtra)
library(tidyr)
df 414504 observations, all years, 10K+ / previously 672578
df17 110937 observations, year 2017 only, 10K+
dfsub1 37512 (?) all years, 10K+, 20 titles only / should be 116753
Remove all cases where Community Boards are the agencies. This is to provide a more accurate list of agencies as there are 59 Community Boards and each is considered its own agency, although in reality these are small offices.
Change the value of the Administrative Staff Analyst title to remove the trailing parenthesis.
View the full dataframe.
#import csv of all complete cases over 10k
df10<- data.frame(read.csv("df10.csv"),stringsAsFactors = FALSE, strip.white=TRUE)
#rename dataframe
df10a<-df10
#remove community boards
df<-df10a[- grep("COMMUNITY BOARD", df10a$agency),]
#change class to character
df$Description <- as.character(df$Description)
#clean title description to remove parenthesis
df$Description[df$Description == "ADMINISTRATIVE STAFF ANALYST ("] <- "ADMINISTRATIVE STAFF ANALYST"
# Intial results indicated this may need cleanup because there are not 84 agencies-- some spaces in the agency names are causing agencies to appear twice. The following trim function successfully reduced the number of unique agencies.
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
df$agency <- trim(df$agency)
#show structure
str(df)
## 'data.frame': 672578 obs. of 24 variables:
## $ X.1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X : int 274305 274306 274307 274308 274309 274310 274311 274312 274313 274314 ...
## $ title : Factor w/ 1236 levels "0527A","0608A",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2014 2016 2015 2016 2015 2017 2014 2017 2017 2017 ...
## $ agencycode : int 2 2 2 2 2 2 2 82 2 2 ...
## $ empname : Factor w/ 301665 levels "A - EDWARDS ",..: 153623 112805 250039 5342 48248 3849 144641 174767 98084 225146 ...
## $ agency : chr "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" ...
## $ payclass : Factor w/ 15 levels "A","A ","BW",..: 1 1 1 1 1 2 1 2 2 2 ...
## $ sal : num 125000 165609 65000 56650 128125 ...
## $ Description : chr "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" ...
## $ CountSubTitles : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Min.MinRate : int 53373 53373 53373 53373 53373 53373 53373 53373 53373 53373 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ PayType : Factor w/ 3 levels "AnnualSalary",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 2 levels "Annual","Seasonal": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 883 883 883 883 883 883 883 883 883 883 ...
## $ UnionName : Factor w/ 106 levels "ACCOUNTING AND EDP TITLES DC37",..: 59 59 59 59 59 59 59 59 59 59 ...
## $ BargUnit : Factor w/ 37 levels "ADWA","CCA","CDSA",..: 19 19 19 19 19 19 19 19 19 19 ...
## $ BargDesc : Factor w/ 37 levels "Alliance ofTheatrical&StageEEs",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
#dataframe df is all years, all titles, no community boards
#df 414504 observations, all years, 10K+
#dataframe dfallyears (previously df- is all years, all titles, no community boards)
dfallyears<-df
df %>%
group_by(Description) %>%
summarise(count = n_distinct(agency))%>%
arrange(desc(count))%>%
top_n(20)%>%
kable("html") %>%
kable_styling()
## Warning: package 'bindrcpp' was built under R version 3.4.4
## Selecting by count
| Description | count |
|---|---|
| COMMUNITY ASSOCIATE | 63 |
| ADMINISTRATIVE STAFF ANALYST | 62 |
| COMMUNITY COORDINATOR | 61 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 60 |
| CLERICAL ASSOCIATE | 59 |
| COMPUTER SYSTEMS MANAGER | 55 |
| EXECUTIVE AGENCY COUNSEL | 55 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 50 |
| ASSOCIATE STAFF ANALYST | 49 |
| COMMUNITY ASSISTANT | 47 |
| SECRETARY | 46 |
| ADMINISTRATIVE PUBLIC INFORMAT | 43 |
| AGENCY ATTORNEY | 42 |
| COMPUTER SPECIALIST (SOFTWARE) | 42 |
| STAFF ANALYST | 42 |
| ADMINISTRATIVE MANAGER | 40 |
| COMPUTER ASSOC (SOFTWARE) | 40 |
| PROCUREMENT ANALYST | 36 |
| COMPUTER ASSOC (OPERATIONS) | 35 |
| ACCOUNTANT | 34 |
| COMPUTER ASSOC (TECH SUPP) | 34 |
str(df)
## 'data.frame': 672578 obs. of 24 variables:
## $ X.1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X : int 274305 274306 274307 274308 274309 274310 274311 274312 274313 274314 ...
## $ title : Factor w/ 1236 levels "0527A","0608A",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2014 2016 2015 2016 2015 2017 2014 2017 2017 2017 ...
## $ agencycode : int 2 2 2 2 2 2 2 82 2 2 ...
## $ empname : Factor w/ 301665 levels "A - EDWARDS ",..: 153623 112805 250039 5342 48248 3849 144641 174767 98084 225146 ...
## $ agency : chr "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" ...
## $ payclass : Factor w/ 15 levels "A","A ","BW",..: 1 1 1 1 1 2 1 2 2 2 ...
## $ sal : num 125000 165609 65000 56650 128125 ...
## $ Description : chr "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" ...
## $ CountSubTitles : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Min.MinRate : int 53373 53373 53373 53373 53373 53373 53373 53373 53373 53373 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ PayType : Factor w/ 3 levels "AnnualSalary",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 2 levels "Annual","Seasonal": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 883 883 883 883 883 883 883 883 883 883 ...
## $ UnionName : Factor w/ 106 levels "ACCOUNTING AND EDP TITLES DC37",..: 59 59 59 59 59 59 59 59 59 59 ...
## $ BargUnit : Factor w/ 37 levels "ADWA","CCA","CDSA",..: 19 19 19 19 19 19 19 19 19 19 ...
## $ BargDesc : Factor w/ 37 levels "Alliance ofTheatrical&StageEEs",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
str(dfallyears)
## 'data.frame': 672578 obs. of 24 variables:
## $ X.1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X : int 274305 274306 274307 274308 274309 274310 274311 274312 274313 274314 ...
## $ title : Factor w/ 1236 levels "0527A","0608A",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2014 2016 2015 2016 2015 2017 2014 2017 2017 2017 ...
## $ agencycode : int 2 2 2 2 2 2 2 82 2 2 ...
## $ empname : Factor w/ 301665 levels "A - EDWARDS ",..: 153623 112805 250039 5342 48248 3849 144641 174767 98084 225146 ...
## $ agency : chr "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" ...
## $ payclass : Factor w/ 15 levels "A","A ","BW",..: 1 1 1 1 1 2 1 2 2 2 ...
## $ sal : num 125000 165609 65000 56650 128125 ...
## $ Description : chr "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" ...
## $ CountSubTitles : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Min.MinRate : int 53373 53373 53373 53373 53373 53373 53373 53373 53373 53373 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ PayType : Factor w/ 3 levels "AnnualSalary",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 2 levels "Annual","Seasonal": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 883 883 883 883 883 883 883 883 883 883 ...
## $ UnionName : Factor w/ 106 levels "ACCOUNTING AND EDP TITLES DC37",..: 59 59 59 59 59 59 59 59 59 59 ...
## $ BargUnit : Factor w/ 37 levels "ADWA","CCA","CDSA",..: 19 19 19 19 19 19 19 19 19 19 ...
## $ BargDesc : Factor w/ 37 levels "Alliance ofTheatrical&StageEEs",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
#salaries above 10k
# highest paid titles in 2017
df17<- dfallyears[dfallyears$year==2017,]
topsal<-df17 %>%
group_by(Description) %>%
mutate(Count = n()) %>%
group_by(title, Description, Count) %>%
summarise_at(vars(sal), funs(mean(., na.rm=TRUE) ))%>%
arrange(desc(sal))
kable(head(topsal,20))
| title | Description | Count | sal |
|---|---|---|---|
| 12707 | PENSION INVESTMENT ADVISOR | 1 | 350000 |
| 40735 | CHIEF ACTUARY | 1 | 290331 |
| 12942 | FIRST DEPUTY MAYOR | 1 | 271136 |
| 12995 | MAYOR | 1 | 258750 |
| 94450 | CHIEF OF STAFF (CITY COUNCIL) | 1 | 251763 |
| 94465 | EXECUTIVE DIRECTOR (CAMPAIGN F | 1 | 244840 |
| 12940 | DEPUTY MAYOR | 4 | 234569 |
| 94488 | CHAIR (HA) | 1 | 231684 |
| 10175 | EXECUTIVE DIRECTOR (TEACHERS R | 1 | 227595 |
| 30140 | FIRST ASSISTANT CORPORATION CO | 1 | 226460 |
| 13002 | COMMISSIONER OF EMERGENCY MANA | 1 | 226366 |
| 13367 | COMMISSIONER OF LABOR RELATION | 1 | 226366 |
| 30188 | CORPORATION COUNSEL | 1 | 226366 |
| 40145 | DIRECTOR OF MANAGEMENT & BUDGE | 1 | 226366 |
| 82977 | FIRST DEPUTY COMMISSIONER (DCA | 1 | 226366 |
| 94310 | DIRECTOR OF THE OFFICE OF COLL | 1 | 226366 |
| 94312 | COMMISSIONER OF PARKS & RECREA | 1 | 226366 |
| 94323 | COMMISSIONER OF FINANCE | 1 | 226366 |
| 94355 | COMMISSIONER OF BUILDINGS | 1 | 226366 |
| 94357 | COMMISSIONER OF HEALTH | 1 | 226366 |
#df17 is 2017 observations only
str(df17)
## 'data.frame': 178746 obs. of 24 variables:
## $ X.1 : int 6 8 9 10 11 12 18 21 22 28 ...
## $ X : int 274310 274312 274313 274314 274315 274316 274322 274325 274326 274332 ...
## $ title : Factor w/ 1236 levels "0527A","0608A",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 ...
## $ agencycode : int 2 82 2 2 2 2 2 82 2 2 ...
## $ empname : Factor w/ 301665 levels "A - EDWARDS ",..: 3849 174767 98084 225146 125693 130732 259294 203430 126850 97678 ...
## $ agency : chr "OFFICE OF THE MAYOR" "MAYOR'S OFFICE OF CONTRACT" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" ...
## $ payclass : Factor w/ 15 levels "A","A ","BW",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ sal : num 102197 80000 130903 185000 108150 ...
## $ Description : chr "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" ...
## $ CountSubTitles : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Min.MinRate : int 53373 53373 53373 53373 53373 53373 53373 53373 53373 53373 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ PayType : Factor w/ 3 levels "AnnualSalary",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 2 levels "Annual","Seasonal": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 883 883 883 883 883 883 883 883 883 883 ...
## $ UnionName : Factor w/ 106 levels "ACCOUNTING AND EDP TITLES DC37",..: 59 59 59 59 59 59 59 59 59 59 ...
## $ BargUnit : Factor w/ 37 levels "ADWA","CCA","CDSA",..: 19 19 19 19 19 19 19 19 19 19 ...
## $ BargDesc : Factor w/ 37 levels "Alliance ofTheatrical&StageEEs",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
# df17 110937 observations, year 2017 only, 10K+
#remove commissioners
df17a<-df17[- grep("COMMISSIONER", df17$Description),]
topsal1<-df17a %>%
group_by(Description) %>%
mutate(Count = n()) %>%
group_by(title, Description, Count) %>%
summarise_at(vars(sal), funs(mean(., na.rm=TRUE) ))%>%
arrange(desc(sal))
kable(head(topsal1,20))
| title | Description | Count | sal |
|---|---|---|---|
| 12707 | PENSION INVESTMENT ADVISOR | 1 | 350000 |
| 40735 | CHIEF ACTUARY | 1 | 290331 |
| 12942 | FIRST DEPUTY MAYOR | 1 | 271136 |
| 12995 | MAYOR | 1 | 258750 |
| 94450 | CHIEF OF STAFF (CITY COUNCIL) | 1 | 251763 |
| 94465 | EXECUTIVE DIRECTOR (CAMPAIGN F | 1 | 244840 |
| 12940 | DEPUTY MAYOR | 4 | 234569 |
| 94488 | CHAIR (HA) | 1 | 231684 |
| 10175 | EXECUTIVE DIRECTOR (TEACHERS R | 1 | 227595 |
| 30140 | FIRST ASSISTANT CORPORATION CO | 1 | 226460 |
| 30188 | CORPORATION COUNSEL | 1 | 226366 |
| 40145 | DIRECTOR OF MANAGEMENT & BUDGE | 1 | 226366 |
| 94310 | DIRECTOR OF THE OFFICE OF COLL | 1 | 226366 |
| 94370 | HUMAN RESOURCES ADMINISTRATOR | 1 | 226366 |
| 94468 | EXECUTIVE DIRECTOR (FISA) | 1 | 226366 |
| 94525 | CHAIR (BIC) | 1 | 226366 |
| 95450 | CHIEF CITY MEDICAL EXAMINER | 1 | 226366 |
| 7026P | CHIEF OF DEPARTMENT | 1 | 225826 |
| 70388 | CHIEF OF DEPARTMENT (FDNY) | 1 | 225826 |
| 95451 | DEPUTY CHIEF CITY MEDICAL EXAM | 5 | 224749 |
#df17a is 2017 observations minus commissioners
str(df17a)
## 'data.frame': 178493 obs. of 24 variables:
## $ X.1 : int 6 8 9 10 11 12 18 21 22 28 ...
## $ X : int 274310 274312 274313 274314 274315 274316 274322 274325 274326 274332 ...
## $ title : Factor w/ 1236 levels "0527A","0608A",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 ...
## $ agencycode : int 2 82 2 2 2 2 2 82 2 2 ...
## $ empname : Factor w/ 301665 levels "A - EDWARDS ",..: 3849 174767 98084 225146 125693 130732 259294 203430 126850 97678 ...
## $ agency : chr "OFFICE OF THE MAYOR" "MAYOR'S OFFICE OF CONTRACT" "OFFICE OF THE MAYOR" "OFFICE OF THE MAYOR" ...
## $ payclass : Factor w/ 15 levels "A","A ","BW",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ sal : num 102197 80000 130903 185000 108150 ...
## $ Description : chr "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" "Research Projects Coor(MA)-MGR" ...
## $ CountSubTitles : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Min.MinRate : int 53373 53373 53373 53373 53373 53373 53373 53373 53373 53373 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ PayType : Factor w/ 3 levels "AnnualSalary",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 2 levels "Annual","Seasonal": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 883 883 883 883 883 883 883 883 883 883 ...
## $ UnionName : Factor w/ 106 levels "ACCOUNTING AND EDP TITLES DC37",..: 59 59 59 59 59 59 59 59 59 59 ...
## $ BargUnit : Factor w/ 37 levels "ADWA","CCA","CDSA",..: 19 19 19 19 19 19 19 19 19 19 ...
## $ BargDesc : Factor w/ 37 levels "Alliance ofTheatrical&StageEEs",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
# df17 110937 observations, year 2017 only, 10K+
Subset the dataframe to include only the top 20 titles represented by the most agencies. This reduces the dataframe to 116753 observations.
These 20 titles represent 116753 of the jobs from years 2014 through 2017.
Issue: A title may have more than one title code, partly due to defunct title codes or special agency designations. To account for this, the grouping is performed on the Description value.
## take dfallyears and subset to select titles only - dfsub1
## not collecting all titles------------
dfsub1<- dfallyears[dfallyears$Description %in% c(
"COMMUNITY ASSOCIATE",
"ADMINISTRATIVE STAFF ANALYST",
"COMMUNITY COORDINATOR",
"PRINCIPAL ADMINISTRATIVE ASSOC",
"CLERICAL ASSOCIATE",
"COMPUTER SYSTEMS MANAGER",
"EXECUTIVE AGENCY COUNSEL",
"ADM MANAGER-NON-MGRL FRM M1/M2",
"ASSOCIATE STAFF ANALYST",
"COMMUNITY ASSISTANT",
"SECRETARY",
"ADMINISTRATIVE PUBLIC INFORMAT",
"AGENCY ATTORNEY",
"COMPUTER SPECIALIST (SOFTWARE)",
"STAFF ANALYST",
"ADMINISTRATIVE MANAGER",
"COMPUTER ASSOC (SOFTWARE)",
"PROCUREMENT ANALYST",
"COMPUTER ASSOC (OPERATIONS)",
"ACCOUNTANT"
), ]
str(dfsub1)
write.csv(dfsub1, file = "df-20titles-allyears.csv")
#import df of select titles
dfsub1<- data.frame(read.csv("dfsub1.csv"),stringsAsFactors = FALSE, strip.white=TRUE)
str(dfsub1)
## 'data.frame': 116753 obs. of 24 variables:
## $ X.1 : int 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 ...
## $ X : int 293378 293380 293381 293382 293383 293384 293385 293386 293387 293388 ...
## $ title : Factor w/ 23 levels "10025","10026",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2017 2016 2014 2014 2015 2016 2017 2014 2017 2016 ...
## $ agencycode : int 846 841 740 11 133 11 41 133 836 740 ...
## $ empname : Factor w/ 59879 levels "A ABABIO","A ABABIO ",..: 27550 23445 20149 9740 10069 33823 46311 10069 43547 38742 ...
## $ agency : Factor w/ 74 levels "ADMINISTRATION FOR CHILDRE",..: 31 34 24 3 44 3 73 44 26 24 ...
## $ payclass : Factor w/ 6 levels "A","A ","BW",..: 2 1 1 1 1 1 2 1 2 1 ...
## $ sal : num 130162 118042 116327 62920 128615 ...
## $ Description : Factor w/ 20 levels "ACCOUNTANT","ADM MANAGER-NON-MGRL FRM M1/M2",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ CountSubTitles : int 8 8 8 8 8 8 8 8 8 8 ...
## $ Min.MinRate : int 46343 46343 46343 46343 46343 46343 46343 46343 46343 46343 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayType : Factor w/ 1 level "AnnualSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 1 level "Annual": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 999 999 999 999 999 999 999 999 999 999 ...
## $ UnionName : Factor w/ 12 levels "ACCOUNTING AND EDP TITLES DC37",..: 7 7 7 7 7 7 7 7 7 7 ...
## $ BargUnit : Factor w/ 6 levels "CWA","DC37","IBT",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ BargDesc : Factor w/ 6 levels "Communication Wrkrs of America",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
dfcommon<-dfsub1 %>%
group_by(Description) %>%
summarise(count = n_distinct(agency))%>%
arrange(desc(count))%>%
top_n(20)
## Selecting by count
kable(dfcommon)
| Description | count |
|---|---|
| COMMUNITY ASSOCIATE | 63 |
| ADMINISTRATIVE STAFF ANALYST | 62 |
| COMMUNITY COORDINATOR | 61 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 60 |
| CLERICAL ASSOCIATE | 59 |
| COMPUTER SYSTEMS MANAGER | 55 |
| EXECUTIVE AGENCY COUNSEL | 55 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 50 |
| ASSOCIATE STAFF ANALYST | 49 |
| COMMUNITY ASSISTANT | 47 |
| SECRETARY | 46 |
| ADMINISTRATIVE PUBLIC INFORMAT | 43 |
| AGENCY ATTORNEY | 42 |
| COMPUTER SPECIALIST (SOFTWARE) | 42 |
| STAFF ANALYST | 42 |
| ADMINISTRATIVE MANAGER | 40 |
| COMPUTER ASSOC (SOFTWARE) | 40 |
| PROCUREMENT ANALYST | 36 |
| COMPUTER ASSOC (OPERATIONS) | 35 |
| ACCOUNTANT | 34 |
write.csv(dfcommon, file = "commontitles.csv")
str(dfsub1)
## 'data.frame': 116753 obs. of 24 variables:
## $ X.1 : int 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 ...
## $ X : int 293378 293380 293381 293382 293383 293384 293385 293386 293387 293388 ...
## $ title : Factor w/ 23 levels "10025","10026",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ year : int 2017 2016 2014 2014 2015 2016 2017 2014 2017 2016 ...
## $ agencycode : int 846 841 740 11 133 11 41 133 836 740 ...
## $ empname : Factor w/ 59879 levels "A ABABIO","A ABABIO ",..: 27550 23445 20149 9740 10069 33823 46311 10069 43547 38742 ...
## $ agency : Factor w/ 74 levels "ADMINISTRATION FOR CHILDRE",..: 31 34 24 3 44 3 73 44 26 24 ...
## $ payclass : Factor w/ 6 levels "A","A ","BW",..: 2 1 1 1 1 1 2 1 2 1 ...
## $ sal : num 130162 118042 116327 62920 128615 ...
## $ Description : Factor w/ 20 levels "ACCOUNTANT","ADM MANAGER-NON-MGRL FRM M1/M2",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ CountSubTitles : int 8 8 8 8 8 8 8 8 8 8 ...
## $ Min.MinRate : int 46343 46343 46343 46343 46343 46343 46343 46343 46343 46343 ...
## $ Max.MaxRate : int 212614 212614 212614 212614 212614 212614 212614 212614 212614 212614 ...
## $ SalaryMinMaxValid: Factor w/ 1 level "ValidSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ MultipleSubtitles: Factor w/ 2 levels "MultipleTitles",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ PayType : Factor w/ 1 level "AnnualSalary": 1 1 1 1 1 1 1 1 1 1 ...
## $ PayPeriod : Factor w/ 1 level "Annual": 1 1 1 1 1 1 1 1 1 1 ...
## $ UnionCode : int 999 999 999 999 999 999 999 999 999 999 ...
## $ UnionName : Factor w/ 12 levels "ACCOUNTING AND EDP TITLES DC37",..: 7 7 7 7 7 7 7 7 7 7 ...
## $ BargUnit : Factor w/ 6 levels "CWA","DC37","IBT",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ BargDesc : Factor w/ 6 levels "Communication Wrkrs of America",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ TitleStatus : Factor w/ 2 levels "ActiveTitle",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ strip.white : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ strip.white.1 : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
Group select titles with average salary and count of title.
Arrange by descending average salary across all years.
salbytitle1<-dfsub1 %>%
group_by(Description) %>%
mutate(Count = n()) %>%
group_by(Description, Count) %>%
summarise_at(vars(sal), funs(mean(., na.rm=TRUE) ))%>%
arrange(desc(sal))
kable(head(salbytitle1))
| Description | Count | sal |
|---|---|---|
| EXECUTIVE AGENCY COUNSEL | 1984 | 125927.59 |
| COMPUTER SYSTEMS MANAGER | 5128 | 122018.25 |
| ADMINISTRATIVE MANAGER | 597 | 112526.88 |
| ADMINISTRATIVE PUBLIC INFORMAT | 603 | 105464.55 |
| COMPUTER SPECIALIST (SOFTWARE) | 5915 | 97897.53 |
| ADMINISTRATIVE STAFF ANALYST | 7541 | 96276.04 |
Group select titles with average salary and count of title, by year.
Arrange by title.
salbytitle2<-dfsub1 %>%
group_by(Description, year) %>%
mutate(Count = n()) %>%
group_by(Description, year, Count) %>%
summarise_at(vars(sal), funs(mean(., na.rm=TRUE) ))%>%
arrange(Description)
kable(salbytitle2)
| Description | year | Count | sal |
|---|---|---|---|
| ACCOUNTANT | 2014 | 300 | 59232.37 |
| ACCOUNTANT | 2015 | 370 | 59810.29 |
| ACCOUNTANT | 2016 | 401 | 61432.15 |
| ACCOUNTANT | 2017 | 441 | 61347.32 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 2014 | 1034 | 65725.33 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 2015 | 1157 | 69003.22 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 2016 | 1117 | 70738.63 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 2017 | 1329 | 74579.52 |
| ADMINISTRATIVE MANAGER | 2014 | 192 | 103706.77 |
| ADMINISTRATIVE MANAGER | 2015 | 191 | 115376.88 |
| ADMINISTRATIVE MANAGER | 2016 | 101 | 121463.16 |
| ADMINISTRATIVE MANAGER | 2017 | 113 | 114708.68 |
| ADMINISTRATIVE PUBLIC INFORMAT | 2014 | 91 | 99970.24 |
| ADMINISTRATIVE PUBLIC INFORMAT | 2015 | 147 | 103492.72 |
| ADMINISTRATIVE PUBLIC INFORMAT | 2016 | 164 | 108113.99 |
| ADMINISTRATIVE PUBLIC INFORMAT | 2017 | 201 | 107232.37 |
| ADMINISTRATIVE STAFF ANALYST | 2014 | 2168 | 90617.33 |
| ADMINISTRATIVE STAFF ANALYST | 2015 | 2142 | 95360.05 |
| ADMINISTRATIVE STAFF ANALYST | 2016 | 1384 | 99768.09 |
| ADMINISTRATIVE STAFF ANALYST | 2017 | 1847 | 101363.81 |
| AGENCY ATTORNEY | 2014 | 738 | 74596.01 |
| AGENCY ATTORNEY | 2015 | 900 | 80065.72 |
| AGENCY ATTORNEY | 2016 | 871 | 82832.14 |
| AGENCY ATTORNEY | 2017 | 1043 | 82382.40 |
| ASSOCIATE STAFF ANALYST | 2014 | 1063 | 72748.61 |
| ASSOCIATE STAFF ANALYST | 2015 | 1086 | 76577.73 |
| ASSOCIATE STAFF ANALYST | 2016 | 739 | 78850.36 |
| ASSOCIATE STAFF ANALYST | 2017 | 756 | 80884.36 |
| CLERICAL ASSOCIATE | 2014 | 4440 | 39627.53 |
| CLERICAL ASSOCIATE | 2015 | 4656 | 40693.27 |
| CLERICAL ASSOCIATE | 2016 | 4293 | 42076.05 |
| CLERICAL ASSOCIATE | 2017 | 4216 | 42029.58 |
| COMMUNITY ASSISTANT | 2014 | 1059 | 33534.27 |
| COMMUNITY ASSISTANT | 2015 | 1131 | 34283.12 |
| COMMUNITY ASSISTANT | 2016 | 1079 | 35337.83 |
| COMMUNITY ASSISTANT | 2017 | 1188 | 35313.90 |
| COMMUNITY ASSOCIATE | 2014 | 4113 | 42498.86 |
| COMMUNITY ASSOCIATE | 2015 | 4935 | 43292.98 |
| COMMUNITY ASSOCIATE | 2016 | 4789 | 45108.02 |
| COMMUNITY ASSOCIATE | 2017 | 5442 | 45137.98 |
| COMMUNITY COORDINATOR | 2014 | 1902 | 60819.30 |
| COMMUNITY COORDINATOR | 2015 | 2560 | 61427.02 |
| COMMUNITY COORDINATOR | 2016 | 3256 | 63185.05 |
| COMMUNITY COORDINATOR | 2017 | 4074 | 63542.80 |
| COMPUTER ASSOC (OPERATIONS) | 2014 | 277 | 63530.53 |
| COMPUTER ASSOC (OPERATIONS) | 2015 | 326 | 66012.44 |
| COMPUTER ASSOC (OPERATIONS) | 2016 | 384 | 70342.29 |
| COMPUTER ASSOC (OPERATIONS) | 2017 | 468 | 70338.94 |
| COMPUTER ASSOC (SOFTWARE) | 2014 | 472 | 73329.46 |
| COMPUTER ASSOC (SOFTWARE) | 2015 | 533 | 75713.89 |
| COMPUTER ASSOC (SOFTWARE) | 2016 | 533 | 78262.29 |
| COMPUTER ASSOC (SOFTWARE) | 2017 | 434 | 79275.68 |
| COMPUTER SPECIALIST (SOFTWARE) | 2014 | 1316 | 94111.22 |
| COMPUTER SPECIALIST (SOFTWARE) | 2015 | 1521 | 96781.59 |
| COMPUTER SPECIALIST (SOFTWARE) | 2016 | 1540 | 100071.71 |
| COMPUTER SPECIALIST (SOFTWARE) | 2017 | 1538 | 100063.92 |
| COMPUTER SYSTEMS MANAGER | 2014 | 1126 | 113379.10 |
| COMPUTER SYSTEMS MANAGER | 2015 | 1265 | 121987.87 |
| COMPUTER SYSTEMS MANAGER | 2016 | 1299 | 125554.22 |
| COMPUTER SYSTEMS MANAGER | 2017 | 1438 | 125615.52 |
| EXECUTIVE AGENCY COUNSEL | 2014 | 433 | 116984.68 |
| EXECUTIVE AGENCY COUNSEL | 2015 | 499 | 124601.88 |
| EXECUTIVE AGENCY COUNSEL | 2016 | 488 | 129527.76 |
| EXECUTIVE AGENCY COUNSEL | 2017 | 564 | 130851.20 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 2014 | 4359 | 52217.00 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 2015 | 4416 | 54967.15 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 2016 | 3930 | 56521.14 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 2017 | 4281 | 58112.05 |
| PROCUREMENT ANALYST | 2014 | 441 | 57757.36 |
| PROCUREMENT ANALYST | 2015 | 523 | 58825.03 |
| PROCUREMENT ANALYST | 2016 | 532 | 60771.63 |
| PROCUREMENT ANALYST | 2017 | 545 | 63340.25 |
| SECRETARY | 2014 | 1038 | 40592.24 |
| SECRETARY | 2015 | 1041 | 41800.83 |
| SECRETARY | 2016 | 889 | 43330.46 |
| SECRETARY | 2017 | 876 | 43391.77 |
| STAFF ANALYST | 2014 | 566 | 59146.88 |
| STAFF ANALYST | 2015 | 581 | 62206.22 |
| STAFF ANALYST | 2016 | 475 | 64356.33 |
| STAFF ANALYST | 2017 | 587 | 65275.30 |
salbytitle3<-salbytitle2%>%
select(Description, year, sal)%>%
spread(year, sal)
kable(salbytitle3)
| Description | 2014 | 2015 | 2016 | 2017 |
|---|---|---|---|---|
| ACCOUNTANT | 59232.37 | 59810.29 | 61432.15 | 61347.32 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 65725.33 | 69003.22 | 70738.63 | 74579.52 |
| ADMINISTRATIVE MANAGER | 103706.77 | 115376.88 | 121463.16 | 114708.68 |
| ADMINISTRATIVE PUBLIC INFORMAT | 99970.24 | 103492.72 | 108113.99 | 107232.37 |
| ADMINISTRATIVE STAFF ANALYST | 90617.33 | 95360.05 | 99768.09 | 101363.81 |
| AGENCY ATTORNEY | 74596.01 | 80065.72 | 82832.14 | 82382.40 |
| ASSOCIATE STAFF ANALYST | 72748.61 | 76577.73 | 78850.36 | 80884.36 |
| CLERICAL ASSOCIATE | 39627.53 | 40693.27 | 42076.05 | 42029.58 |
| COMMUNITY ASSISTANT | 33534.27 | 34283.12 | 35337.83 | 35313.90 |
| COMMUNITY ASSOCIATE | 42498.86 | 43292.98 | 45108.02 | 45137.98 |
| COMMUNITY COORDINATOR | 60819.30 | 61427.02 | 63185.05 | 63542.80 |
| COMPUTER ASSOC (OPERATIONS) | 63530.53 | 66012.44 | 70342.29 | 70338.94 |
| COMPUTER ASSOC (SOFTWARE) | 73329.46 | 75713.89 | 78262.29 | 79275.68 |
| COMPUTER SPECIALIST (SOFTWARE) | 94111.22 | 96781.59 | 100071.71 | 100063.92 |
| COMPUTER SYSTEMS MANAGER | 113379.10 | 121987.87 | 125554.22 | 125615.52 |
| EXECUTIVE AGENCY COUNSEL | 116984.68 | 124601.88 | 129527.76 | 130851.20 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 52217.00 | 54967.15 | 56521.14 | 58112.05 |
| PROCUREMENT ANALYST | 57757.36 | 58825.03 | 60771.63 | 63340.25 |
| SECRETARY | 40592.24 | 41800.83 | 43330.46 | 43391.77 |
| STAFF ANALYST | 59146.88 | 62206.22 | 64356.33 | 65275.30 |
Group agencies represented in these select titles with average salary and count of title, by year.
Arrange by title.
salbyagency1<-dfsub1 %>%
group_by(agency, year) %>%
mutate(Count = n()) %>%
group_by(agency, year, Count) %>%
summarise_at(vars(sal), funs(mean(., na.rm=TRUE) ))%>%
arrange(agency)
kable(salbyagency1)
| agency | year | Count | sal |
|---|---|---|---|
| ADMINISTRATION FOR CHILDRE | 2014 | 1432 | 59732.40 |
| ADMINISTRATION FOR CHILDRE | 2015 | 1553 | 62590.83 |
| ADMINISTRATION FOR CHILDRE | 2016 | 1482 | 63971.01 |
| ADMINISTRATION FOR CHILDRE | 2017 | 1648 | 66180.01 |
| BOARD OF CORRECTIONS | 2014 | 4 | 66685.00 |
| BOARD OF CORRECTIONS | 2015 | 5 | 69880.20 |
| BOARD OF CORRECTIONS | 2016 | 4 | 71354.25 |
| BOARD OF CORRECTIONS | 2017 | 9 | 67972.11 |
| BOROUGH PRESIDENT-BRONX | 2014 | 34 | 66180.32 |
| BOROUGH PRESIDENT-BRONX | 2015 | 32 | 62412.12 |
| BOROUGH PRESIDENT-BRONX | 2016 | 30 | 64474.53 |
| BOROUGH PRESIDENT-BRONX | 2017 | 30 | 64928.70 |
| BOROUGH PRESIDENT-BROOKLYN | 2014 | 32 | 55475.84 |
| BOROUGH PRESIDENT-BROOKLYN | 2015 | 37 | 56183.57 |
| BOROUGH PRESIDENT-BROOKLYN | 2016 | 33 | 59080.82 |
| BOROUGH PRESIDENT-BROOKLYN | 2017 | 33 | 60662.12 |
| BOROUGH PRESIDENT-MANHATTA | 2014 | 28 | 62518.10 |
| BOROUGH PRESIDENT-MANHATTA | 2015 | 31 | 63838.15 |
| BOROUGH PRESIDENT-MANHATTA | 2016 | 24 | 61119.49 |
| BOROUGH PRESIDENT-MANHATTA | 2017 | 29 | 60928.54 |
| BOROUGH PRESIDENT-QUEENS | 2014 | 34 | 53073.65 |
| BOROUGH PRESIDENT-QUEENS | 2015 | 39 | 55643.62 |
| BOROUGH PRESIDENT-QUEENS | 2016 | 34 | 56415.15 |
| BOROUGH PRESIDENT-QUEENS | 2017 | 35 | 58138.63 |
| BOROUGH PRESIDENT-RICHMOND | 2014 | 14 | 60866.57 |
| BOROUGH PRESIDENT-RICHMOND | 2015 | 15 | 62099.60 |
| BOROUGH PRESIDENT-RICHMOND | 2016 | 14 | 63843.00 |
| BOROUGH PRESIDENT-RICHMOND | 2017 | 15 | 64391.00 |
| BUSINESS INTEGRITY COMMISS | 2014 | 52 | 70927.19 |
| BUSINESS INTEGRITY COMMISS | 2015 | 64 | 71922.08 |
| BUSINESS INTEGRITY COMMISS | 2016 | 59 | 69806.25 |
| BUSINESS INTEGRITY COMMISS | 2017 | 71 | 68089.70 |
| CAMPAIGN FINANCE BOARD | 2014 | 9 | 117336.22 |
| CAMPAIGN FINANCE BOARD | 2015 | 10 | 129195.80 |
| CAMPAIGN FINANCE BOARD | 2016 | 6 | 154937.67 |
| CAMPAIGN FINANCE BOARD | 2017 | 4 | 160581.00 |
| CITY CLERK | 2014 | 42 | 48788.43 |
| CITY CLERK | 2015 | 53 | 47443.17 |
| CITY CLERK | 2016 | 45 | 46516.60 |
| CITY CLERK | 2017 | 51 | 47426.06 |
| CIVIL SERVICE COMMISSION | 2014 | 4 | 40472.50 |
| CIVIL SERVICE COMMISSION | 2015 | 7 | 63678.43 |
| CIVIL SERVICE COMMISSION | 2016 | 6 | 70340.50 |
| CIVIL SERVICE COMMISSION | 2017 | 7 | 73065.86 |
| CIVILIAN COMPLAINT REVIEW | 2014 | 31 | 72648.22 |
| CIVILIAN COMPLAINT REVIEW | 2015 | 40 | 71804.85 |
| CIVILIAN COMPLAINT REVIEW | 2016 | 32 | 73885.59 |
| CIVILIAN COMPLAINT REVIEW | 2017 | 41 | 82233.49 |
| COMMISSION ON HUMAN RIGHTS | 2014 | 27 | 56460.33 |
| COMMISSION ON HUMAN RIGHTS | 2015 | 40 | 68989.25 |
| COMMISSION ON HUMAN RIGHTS | 2016 | 45 | 75397.24 |
| COMMISSION ON HUMAN RIGHTS | 2017 | 81 | 73055.28 |
| CONFLICTS OF INTEREST BOAR | 2014 | 15 | 85216.67 |
| CONFLICTS OF INTEREST BOAR | 2015 | 15 | 93679.60 |
| CONFLICTS OF INTEREST BOAR | 2016 | 15 | 87350.00 |
| CONFLICTS OF INTEREST BOAR | 2017 | 19 | 93880.84 |
| DEPARTMENT FOR THE AGING | 2014 | 152 | 58319.72 |
| DEPARTMENT FOR THE AGING | 2015 | 159 | 57900.85 |
| DEPARTMENT FOR THE AGING | 2016 | 169 | 64597.21 |
| DEPARTMENT FOR THE AGING | 2017 | 184 | 67081.31 |
| DEPARTMENT OF BUILDINGS | 2014 | 450 | 63356.54 |
| DEPARTMENT OF BUILDINGS | 2015 | 502 | 65153.16 |
| DEPARTMENT OF BUILDINGS | 2016 | 500 | 63969.78 |
| DEPARTMENT OF BUILDINGS | 2017 | 558 | 65206.66 |
| DEPARTMENT OF BUSINESS SER | 2014 | 121 | 62756.34 |
| DEPARTMENT OF BUSINESS SER | 2015 | 111 | 65800.72 |
| DEPARTMENT OF BUSINESS SER | 2016 | 72 | 71019.68 |
| DEPARTMENT OF BUSINESS SER | 2017 | 81 | 71233.40 |
| DEPARTMENT OF CITY PLANNIN | 2014 | 57 | 72693.28 |
| DEPARTMENT OF CITY PLANNIN | 2015 | 67 | 74579.81 |
| DEPARTMENT OF CITY PLANNIN | 2016 | 77 | 72363.36 |
| DEPARTMENT OF CITY PLANNIN | 2017 | 113 | 71399.25 |
| DEPARTMENT OF CITYWIDE ADM | 2014 | 523 | 65958.71 |
| DEPARTMENT OF CITYWIDE ADM | 2015 | 609 | 70890.04 |
| DEPARTMENT OF CITYWIDE ADM | 2016 | 615 | 72400.81 |
| DEPARTMENT OF CITYWIDE ADM | 2017 | 734 | 73292.03 |
| DEPARTMENT OF CONSUMER AFF | 2014 | 276 | 57146.09 |
| DEPARTMENT OF CONSUMER AFF | 2015 | 331 | 56942.71 |
| DEPARTMENT OF CONSUMER AFF | 2016 | 267 | 59386.82 |
| DEPARTMENT OF CONSUMER AFF | 2017 | 312 | 61447.03 |
| DEPARTMENT OF CORRECTION | 2014 | 278 | 67993.55 |
| DEPARTMENT OF CORRECTION | 2015 | 414 | 75326.02 |
| DEPARTMENT OF CORRECTION | 2016 | 441 | 74782.65 |
| DEPARTMENT OF CORRECTION | 2017 | 517 | 74263.99 |
| DEPARTMENT OF CULTURAL AFF | 2014 | 28 | 76014.71 |
| DEPARTMENT OF CULTURAL AFF | 2015 | 30 | 74817.17 |
| DEPARTMENT OF CULTURAL AFF | 2016 | 29 | 74413.86 |
| DEPARTMENT OF CULTURAL AFF | 2017 | 30 | 74398.87 |
| DEPARTMENT OF DESIGN AND C | 2014 | 262 | 68628.10 |
| DEPARTMENT OF DESIGN AND C | 2015 | 311 | 67189.05 |
| DEPARTMENT OF DESIGN AND C | 2016 | 284 | 70203.42 |
| DEPARTMENT OF DESIGN AND C | 2017 | 314 | 70152.31 |
| DEPARTMENT OF EDUCATION | 2014 | 3916 | 52146.32 |
| DEPARTMENT OF EDUCATION | 2015 | 4477 | 53797.00 |
| DEPARTMENT OF EDUCATION | 2016 | 4131 | 55224.47 |
| DEPARTMENT OF EDUCATION | 2017 | 4731 | 57837.25 |
| DEPARTMENT OF ENVIRONMENTA | 2014 | 1054 | 61005.92 |
| DEPARTMENT OF ENVIRONMENTA | 2015 | 1165 | 63481.36 |
| DEPARTMENT OF ENVIRONMENTA | 2016 | 1126 | 65811.40 |
| DEPARTMENT OF ENVIRONMENTA | 2017 | 1190 | 68438.58 |
| DEPARTMENT OF FINANCE | 2014 | 1009 | 66666.84 |
| DEPARTMENT OF FINANCE | 2015 | 1084 | 70300.27 |
| DEPARTMENT OF FINANCE | 2016 | 1015 | 72426.55 |
| DEPARTMENT OF FINANCE | 2017 | 1069 | 72861.89 |
| DEPARTMENT OF HEALTH AND M | 2014 | 1151 | 62259.72 |
| DEPARTMENT OF HEALTH AND M | 2015 | 1239 | 65749.68 |
| DEPARTMENT OF HEALTH AND M | 2016 | 1246 | 65934.56 |
| DEPARTMENT OF HEALTH AND M | 2017 | 1507 | 66967.19 |
| DEPARTMENT OF HOMELESS SER | 2014 | 735 | 53890.39 |
| DEPARTMENT OF HOMELESS SER | 2015 | 833 | 56218.03 |
| DEPARTMENT OF HOMELESS SER | 2016 | 852 | 55636.33 |
| DEPARTMENT OF HOMELESS SER | 2017 | 767 | 51932.62 |
| DEPARTMENT OF INFORMATION | 2014 | 595 | 91729.04 |
| DEPARTMENT OF INFORMATION | 2015 | 730 | 98706.06 |
| DEPARTMENT OF INFORMATION | 2016 | 767 | 100088.62 |
| DEPARTMENT OF INFORMATION | 2017 | 771 | 100495.17 |
| DEPARTMENT OF INVESTIGATIO | 2014 | 67 | 63854.16 |
| DEPARTMENT OF INVESTIGATIO | 2015 | 70 | 65364.14 |
| DEPARTMENT OF INVESTIGATIO | 2016 | 81 | 67926.04 |
| DEPARTMENT OF INVESTIGATIO | 2017 | 84 | 68471.85 |
| DEPARTMENT OF PARKS & RECR | 2014 | 823 | 60756.63 |
| DEPARTMENT OF PARKS & RECR | 2015 | 927 | 62375.13 |
| DEPARTMENT OF PARKS & RECR | 2016 | 911 | 64231.04 |
| DEPARTMENT OF PARKS & RECR | 2017 | 985 | 65723.79 |
| DEPARTMENT OF PROBATION | 2014 | 201 | 51078.82 |
| DEPARTMENT OF PROBATION | 2015 | 203 | 53093.83 |
| DEPARTMENT OF PROBATION | 2016 | 175 | 56425.04 |
| DEPARTMENT OF PROBATION | 2017 | 198 | 59129.73 |
| DEPARTMENT OF SANITATION | 2014 | 585 | 56913.43 |
| DEPARTMENT OF SANITATION | 2015 | 665 | 59591.56 |
| DEPARTMENT OF SANITATION | 2016 | 616 | 62590.85 |
| DEPARTMENT OF SANITATION | 2017 | 669 | 63328.59 |
| DEPARTMENT OF TRANSPORTATI | 2014 | 865 | 61253.04 |
| DEPARTMENT OF TRANSPORTATI | 2015 | 949 | 63212.57 |
| DEPARTMENT OF TRANSPORTATI | 2016 | 885 | 65734.78 |
| DEPARTMENT OF TRANSPORTATI | 2017 | 983 | 66812.30 |
| DEPARTMENT OF VETERANS’ SE | 2016 | 11 | 56021.73 |
| DEPARTMENT OF VETERANS’ SE | 2017 | 17 | 57486.59 |
| DEPARTMENT OF YOUTH AND CO | 2014 | 165 | 74929.59 |
| DEPARTMENT OF YOUTH AND CO | 2015 | 210 | 76889.92 |
| DEPARTMENT OF YOUTH AND CO | 2016 | 182 | 78565.18 |
| DEPARTMENT OF YOUTH AND CO | 2017 | 210 | 82335.87 |
| DEPT. OF RECORDS AND INFOR | 2014 | 24 | 54503.38 |
| DEPT. OF RECORDS AND INFOR | 2015 | 27 | 63429.44 |
| DEPT. OF RECORDS AND INFOR | 2016 | 21 | 63211.95 |
| DEPT. OF RECORDS AND INFOR | 2017 | 32 | 66596.75 |
| DISTRICT ATTORNEY-BRONX CO | 2014 | 301 | 41808.74 |
| DISTRICT ATTORNEY-BRONX CO | 2015 | 336 | 42673.41 |
| DISTRICT ATTORNEY-BRONX CO | 2016 | 378 | 43429.56 |
| DISTRICT ATTORNEY-BRONX CO | 2017 | 440 | 43473.89 |
| DISTRICT ATTORNEY-KINGS CO | 2014 | 418 | 48331.39 |
| DISTRICT ATTORNEY-KINGS CO | 2015 | 492 | 49356.55 |
| DISTRICT ATTORNEY-KINGS CO | 2016 | 424 | 47611.47 |
| DISTRICT ATTORNEY-KINGS CO | 2017 | 479 | 47552.04 |
| DISTRICT ATTORNEY-NEW YORK | 2014 | 614 | 54091.86 |
| DISTRICT ATTORNEY-NEW YORK | 2015 | 756 | 54667.01 |
| DISTRICT ATTORNEY-NEW YORK | 2016 | 630 | 53393.77 |
| DISTRICT ATTORNEY-NEW YORK | 2017 | 772 | 51702.44 |
| DISTRICT ATTORNEY-QUEENS C | 2014 | 190 | 47065.14 |
| DISTRICT ATTORNEY-QUEENS C | 2015 | 226 | 47759.85 |
| DISTRICT ATTORNEY-QUEENS C | 2016 | 227 | 46908.45 |
| DISTRICT ATTORNEY-QUEENS C | 2017 | 267 | 47506.75 |
| DISTRICT ATTORNEY-RICHMOND | 2014 | 39 | 58498.67 |
| DISTRICT ATTORNEY-RICHMOND | 2015 | 41 | 60704.37 |
| DISTRICT ATTORNEY-RICHMOND | 2016 | 52 | 59367.40 |
| DISTRICT ATTORNEY-RICHMOND | 2017 | 62 | 60215.87 |
| DISTRICT ATTORNEY - SPECIA | 2014 | 60 | 65773.58 |
| DISTRICT ATTORNEY - SPECIA | 2015 | 66 | 68018.83 |
| DISTRICT ATTORNEY - SPECIA | 2016 | 63 | 64878.60 |
| DISTRICT ATTORNEY - SPECIA | 2017 | 73 | 65126.64 |
| EQUAL EMPLOYMENT PRACTICES | 2014 | 5 | 75937.00 |
| EQUAL EMPLOYMENT PRACTICES | 2015 | 7 | 74048.29 |
| EQUAL EMPLOYMENT PRACTICES | 2016 | 6 | 65169.75 |
| EQUAL EMPLOYMENT PRACTICES | 2017 | 7 | 67345.71 |
| FINANCIAL INFORMATION SERV | 2014 | 365 | 102505.53 |
| FINANCIAL INFORMATION SERV | 2015 | 405 | 107245.31 |
| FINANCIAL INFORMATION SERV | 2016 | 371 | 111566.22 |
| FINANCIAL INFORMATION SERV | 2017 | 384 | 112289.95 |
| FIRE DEPARTMENT | 2014 | 470 | 65196.99 |
| FIRE DEPARTMENT | 2015 | 531 | 68737.92 |
| FIRE DEPARTMENT | 2016 | 519 | 71687.34 |
| FIRE DEPARTMENT | 2017 | 554 | 74185.68 |
| HOUSING PRESERVATION & DEV | 2014 | 1020 | 56206.66 |
| HOUSING PRESERVATION & DEV | 2015 | 1172 | 57669.95 |
| HOUSING PRESERVATION & DEV | 2016 | 1157 | 60740.58 |
| HOUSING PRESERVATION & DEV | 2017 | 1315 | 63204.40 |
| HRA/DEPARTMENT OF SOCIAL S | 2014 | 4204 | 55579.85 |
| HRA/DEPARTMENT OF SOCIAL S | 2015 | 4361 | 58077.07 |
| HRA/DEPARTMENT OF SOCIAL S | 2016 | 4022 | 59470.80 |
| HRA/DEPARTMENT OF SOCIAL S | 2017 | 4485 | 61813.37 |
| INDEPENDENT BUDGET OFFICE | 2014 | 2 | 68741.00 |
| INDEPENDENT BUDGET OFFICE | 2015 | 2 | 71884.00 |
| INDEPENDENT BUDGET OFFICE | 2016 | 2 | 73692.50 |
| INDEPENDENT BUDGET OFFICE | 2017 | 2 | 79167.00 |
| LANDMARKS PRESERVATION COM | 2014 | 10 | 62070.00 |
| LANDMARKS PRESERVATION COM | 2015 | 14 | 60507.86 |
| LANDMARKS PRESERVATION COM | 2016 | 12 | 62791.50 |
| LANDMARKS PRESERVATION COM | 2017 | 15 | 62037.53 |
| LAW DEPARTMENT | 2014 | 197 | 51145.21 |
| LAW DEPARTMENT | 2015 | 214 | 51578.05 |
| LAW DEPARTMENT | 2016 | 213 | 53538.91 |
| LAW DEPARTMENT | 2017 | 227 | 54783.88 |
| MAYOR’S OFFICE OF CONTRACT | 2016 | 3 | 109305.00 |
| MAYOR’S OFFICE OF CONTRACT | 2017 | 27 | 112573.56 |
| N.Y.C. HOUSING AUTHORITY | 2014 | 1627 | 55747.10 |
| N.Y.C. HOUSING AUTHORITY | 2015 | 1623 | 58875.03 |
| N.Y.C. HOUSING AUTHORITY | 2016 | 1403 | 60317.79 |
| N.Y.C. HOUSING AUTHORITY | 2017 | 1413 | 61586.53 |
| NEW YORK CITY FIRE PENSION | 2017 | 15 | 74262.33 |
| NYC EMPLOYEES’ RETIREMENT | 2014 | 137 | 69702.27 |
| NYC EMPLOYEES’ RETIREMENT | 2015 | 148 | 72584.87 |
| NYC EMPLOYEES’ RETIREMENT | 2016 | 142 | 75762.08 |
| NYC EMPLOYEES’ RETIREMENT | 2017 | 155 | 77432.95 |
| NYC POLICE PENSION FUND | 2014 | 80 | 64750.97 |
| NYC POLICE PENSION FUND | 2015 | 85 | 66887.76 |
| NYC POLICE PENSION FUND | 2016 | 77 | 67441.99 |
| NYC POLICE PENSION FUND | 2017 | 89 | 65829.20 |
| OFFICE OF ADMINISTRATIVE T | 2014 | 190 | 63935.62 |
| OFFICE OF ADMINISTRATIVE T | 2015 | 199 | 69168.33 |
| OFFICE OF ADMINISTRATIVE T | 2016 | 183 | 70081.19 |
| OFFICE OF ADMINISTRATIVE T | 2017 | 247 | 67864.62 |
| OFFICE OF COLLECTIVE BARGA | 2014 | 4 | 71059.50 |
| OFFICE OF COLLECTIVE BARGA | 2015 | 4 | 84986.00 |
| OFFICE OF COLLECTIVE BARGA | 2016 | 4 | 88826.75 |
| OFFICE OF COLLECTIVE BARGA | 2017 | 4 | 89370.25 |
| OFFICE OF EMERGENCY MANAGE | 2014 | 16 | 95514.56 |
| OFFICE OF EMERGENCY MANAGE | 2015 | 16 | 89555.44 |
| OFFICE OF EMERGENCY MANAGE | 2016 | 13 | 86145.15 |
| OFFICE OF EMERGENCY MANAGE | 2017 | 11 | 87415.82 |
| OFFICE OF LABOR RELATIONS | 2014 | 58 | 65207.40 |
| OFFICE OF LABOR RELATIONS | 2015 | 70 | 65484.00 |
| OFFICE OF LABOR RELATIONS | 2016 | 63 | 62848.05 |
| OFFICE OF LABOR RELATIONS | 2017 | 77 | 65058.31 |
| OFFICE OF MANAGEMENT AND B | 2014 | 19 | 137491.74 |
| OFFICE OF MANAGEMENT AND B | 2015 | 19 | 147628.58 |
| OFFICE OF MANAGEMENT AND B | 2016 | 17 | 148612.18 |
| OFFICE OF MANAGEMENT AND B | 2017 | 17 | 148612.18 |
| OFFICE OF PAYROLL ADMINIST | 2014 | 114 | 74751.23 |
| OFFICE OF PAYROLL ADMINIST | 2015 | 127 | 79013.73 |
| OFFICE OF PAYROLL ADMINIST | 2016 | 127 | 79635.76 |
| OFFICE OF PAYROLL ADMINIST | 2017 | 134 | 83551.34 |
| OFFICE OF THE ACTUARY | 2014 | 3 | 67432.33 |
| OFFICE OF THE ACTUARY | 2015 | 4 | 64398.00 |
| OFFICE OF THE ACTUARY | 2016 | 5 | 86318.20 |
| OFFICE OF THE ACTUARY | 2017 | 7 | 109554.71 |
| OFFICE OF THE COMPTROLLER | 2014 | 330 | 76068.80 |
| OFFICE OF THE COMPTROLLER | 2015 | 397 | 80812.27 |
| OFFICE OF THE COMPTROLLER | 2016 | 321 | 83891.29 |
| OFFICE OF THE COMPTROLLER | 2017 | 320 | 74745.20 |
| OFFICE OF THE MAYOR | 2014 | 49 | 105785.29 |
| OFFICE OF THE MAYOR | 2015 | 20 | 110621.25 |
| OFFICE OF THE MAYOR | 2016 | 11 | 99321.82 |
| OFFICE OF THE MAYOR | 2017 | 11 | 97544.55 |
| POLICE DEPARTMENT | 2014 | 873 | 62960.34 |
| POLICE DEPARTMENT | 2015 | 935 | 67144.11 |
| POLICE DEPARTMENT | 2016 | 892 | 70136.29 |
| POLICE DEPARTMENT | 2017 | 958 | 72621.08 |
| PUBLIC ADMINISTRATOR BRONX | 2014 | 5 | 44224.80 |
| PUBLIC ADMINISTRATOR BRONX | 2015 | 5 | 45558.60 |
| PUBLIC ADMINISTRATOR BRONX | 2016 | 5 | 44190.60 |
| PUBLIC ADMINISTRATOR BRONX | 2017 | 5 | 44536.80 |
| PUBLIC ADMINISTRATOR KINGS | 2014 | 4 | 39401.50 |
| PUBLIC ADMINISTRATOR KINGS | 2015 | 6 | 40011.83 |
| PUBLIC ADMINISTRATOR KINGS | 2016 | 7 | 39048.71 |
| PUBLIC ADMINISTRATOR KINGS | 2017 | 8 | 42846.62 |
| PUBLIC ADMINISTRATOR NEW Y | 2014 | 5 | 44355.60 |
| PUBLIC ADMINISTRATOR NEW Y | 2015 | 5 | 45523.80 |
| PUBLIC ADMINISTRATOR NEW Y | 2016 | 5 | 46848.60 |
| PUBLIC ADMINISTRATOR NEW Y | 2017 | 5 | 47194.20 |
| PUBLIC ADMINISTRATOR QUEEN | 2015 | 1 | 30750.00 |
| PUBLIC ADMINISTRATOR QUEEN | 2016 | 1 | 31673.00 |
| PUBLIC ADMINISTRATOR QUEEN | 2017 | 1 | 31673.00 |
| TAX COMMISSION | 2014 | 16 | 79023.12 |
| TAX COMMISSION | 2015 | 18 | 82229.11 |
| TAX COMMISSION | 2016 | 18 | 85772.61 |
| TAX COMMISSION | 2017 | 18 | 86457.50 |
| TAXI AND LIMOUSINE COMMISS | 2014 | 225 | 57667.88 |
| TAXI AND LIMOUSINE COMMISS | 2015 | 261 | 56518.08 |
| TAXI AND LIMOUSINE COMMISS | 2016 | 227 | 59023.83 |
| TAXI AND LIMOUSINE COMMISS | 2017 | 258 | 59757.87 |
| TEACHERS’ RETIREMENT SYSTE | 2014 | 172 | 88712.47 |
| TEACHERS’ RETIREMENT SYSTE | 2015 | 161 | 96695.20 |
| TEACHERS’ RETIREMENT SYSTE | 2016 | 160 | 97252.62 |
| TEACHERS’ RETIREMENT SYSTE | 2017 | 167 | 98581.96 |
| TRIBOROUGH BRIDGE AND TUNN | 2014 | 211 | 78429.73 |
| TRIBOROUGH BRIDGE AND TUNN | 2015 | 199 | 78070.36 |
| TRIBOROUGH BRIDGE AND TUNN | 2016 | 202 | 82043.89 |
| TRIBOROUGH BRIDGE AND TUNN | 2017 | 223 | 85334.53 |
salbyagency2<-salbyagency1%>%
select(agency, year, sal)%>%
spread(year, sal)
kable(salbyagency2)
| agency | 2014 | 2015 | 2016 | 2017 |
|---|---|---|---|---|
| ADMINISTRATION FOR CHILDRE | 59732.40 | 62590.83 | 63971.01 | 66180.01 |
| BOARD OF CORRECTIONS | 66685.00 | 69880.20 | 71354.25 | 67972.11 |
| BOROUGH PRESIDENT-BRONX | 66180.32 | 62412.12 | 64474.53 | 64928.70 |
| BOROUGH PRESIDENT-BROOKLYN | 55475.84 | 56183.57 | 59080.82 | 60662.12 |
| BOROUGH PRESIDENT-MANHATTA | 62518.10 | 63838.15 | 61119.49 | 60928.54 |
| BOROUGH PRESIDENT-QUEENS | 53073.65 | 55643.62 | 56415.15 | 58138.63 |
| BOROUGH PRESIDENT-RICHMOND | 60866.57 | 62099.60 | 63843.00 | 64391.00 |
| BUSINESS INTEGRITY COMMISS | 70927.19 | 71922.08 | 69806.25 | 68089.70 |
| CAMPAIGN FINANCE BOARD | 117336.22 | 129195.80 | 154937.67 | 160581.00 |
| CITY CLERK | 48788.43 | 47443.17 | 46516.60 | 47426.06 |
| CIVIL SERVICE COMMISSION | 40472.50 | 63678.43 | 70340.50 | 73065.86 |
| CIVILIAN COMPLAINT REVIEW | 72648.22 | 71804.85 | 73885.59 | 82233.49 |
| COMMISSION ON HUMAN RIGHTS | 56460.33 | 68989.25 | 75397.24 | 73055.28 |
| CONFLICTS OF INTEREST BOAR | 85216.67 | 93679.60 | 87350.00 | 93880.84 |
| DEPARTMENT FOR THE AGING | 58319.72 | 57900.85 | 64597.21 | 67081.31 |
| DEPARTMENT OF BUILDINGS | 63356.54 | 65153.16 | 63969.78 | 65206.66 |
| DEPARTMENT OF BUSINESS SER | 62756.34 | 65800.72 | 71019.68 | 71233.40 |
| DEPARTMENT OF CITY PLANNIN | 72693.28 | 74579.81 | 72363.36 | 71399.25 |
| DEPARTMENT OF CITYWIDE ADM | 65958.71 | 70890.04 | 72400.81 | 73292.03 |
| DEPARTMENT OF CONSUMER AFF | 57146.09 | 56942.71 | 59386.82 | 61447.03 |
| DEPARTMENT OF CORRECTION | 67993.55 | 75326.02 | 74782.65 | 74263.99 |
| DEPARTMENT OF CULTURAL AFF | 76014.71 | 74817.17 | 74413.86 | 74398.87 |
| DEPARTMENT OF DESIGN AND C | 68628.10 | 67189.05 | 70203.42 | 70152.31 |
| DEPARTMENT OF EDUCATION | 52146.32 | 53797.00 | 55224.47 | 57837.25 |
| DEPARTMENT OF ENVIRONMENTA | 61005.92 | 63481.36 | 65811.40 | 68438.58 |
| DEPARTMENT OF FINANCE | 66666.84 | 70300.27 | 72426.55 | 72861.89 |
| DEPARTMENT OF HEALTH AND M | 62259.72 | 65749.68 | 65934.56 | 66967.19 |
| DEPARTMENT OF HOMELESS SER | 53890.39 | 56218.03 | 55636.33 | 51932.62 |
| DEPARTMENT OF INFORMATION | 91729.04 | 98706.06 | 100088.62 | 100495.17 |
| DEPARTMENT OF INVESTIGATIO | 63854.16 | 65364.14 | 67926.04 | 68471.85 |
| DEPARTMENT OF PARKS & RECR | 60756.63 | 62375.13 | 64231.04 | 65723.79 |
| DEPARTMENT OF PROBATION | 51078.82 | 53093.83 | 56425.04 | 59129.73 |
| DEPARTMENT OF SANITATION | 56913.43 | 59591.56 | 62590.85 | 63328.59 |
| DEPARTMENT OF TRANSPORTATI | 61253.04 | 63212.57 | 65734.78 | 66812.30 |
| DEPARTMENT OF VETERANS’ SE | NA | NA | 56021.73 | 57486.59 |
| DEPARTMENT OF YOUTH AND CO | 74929.59 | 76889.92 | 78565.18 | 82335.87 |
| DEPT. OF RECORDS AND INFOR | 54503.38 | 63429.44 | 63211.95 | 66596.75 |
| DISTRICT ATTORNEY-BRONX CO | 41808.74 | 42673.41 | 43429.56 | 43473.89 |
| DISTRICT ATTORNEY-KINGS CO | 48331.39 | 49356.55 | 47611.47 | 47552.04 |
| DISTRICT ATTORNEY-NEW YORK | 54091.86 | 54667.01 | 53393.77 | 51702.44 |
| DISTRICT ATTORNEY-QUEENS C | 47065.14 | 47759.85 | 46908.45 | 47506.75 |
| DISTRICT ATTORNEY-RICHMOND | 58498.67 | 60704.37 | 59367.40 | 60215.87 |
| DISTRICT ATTORNEY - SPECIA | 65773.58 | 68018.83 | 64878.60 | 65126.64 |
| EQUAL EMPLOYMENT PRACTICES | 75937.00 | 74048.29 | 65169.75 | 67345.71 |
| FINANCIAL INFORMATION SERV | 102505.53 | 107245.31 | 111566.22 | 112289.95 |
| FIRE DEPARTMENT | 65196.99 | 68737.92 | 71687.34 | 74185.68 |
| HOUSING PRESERVATION & DEV | 56206.66 | 57669.95 | 60740.58 | 63204.40 |
| HRA/DEPARTMENT OF SOCIAL S | 55579.85 | 58077.07 | 59470.80 | 61813.37 |
| INDEPENDENT BUDGET OFFICE | 68741.00 | 71884.00 | 73692.50 | 79167.00 |
| LANDMARKS PRESERVATION COM | 62070.00 | 60507.86 | 62791.50 | 62037.53 |
| LAW DEPARTMENT | 51145.21 | 51578.05 | 53538.91 | 54783.88 |
| MAYOR’S OFFICE OF CONTRACT | NA | NA | 109305.00 | 112573.56 |
| N.Y.C. HOUSING AUTHORITY | 55747.10 | 58875.03 | 60317.79 | 61586.53 |
| NEW YORK CITY FIRE PENSION | NA | NA | NA | 74262.33 |
| NYC EMPLOYEES’ RETIREMENT | 69702.27 | 72584.87 | 75762.08 | 77432.95 |
| NYC POLICE PENSION FUND | 64750.97 | 66887.76 | 67441.99 | 65829.20 |
| OFFICE OF ADMINISTRATIVE T | 63935.62 | 69168.33 | 70081.19 | 67864.62 |
| OFFICE OF COLLECTIVE BARGA | 71059.50 | 84986.00 | 88826.75 | 89370.25 |
| OFFICE OF EMERGENCY MANAGE | 95514.56 | 89555.44 | 86145.15 | 87415.82 |
| OFFICE OF LABOR RELATIONS | 65207.40 | 65484.00 | 62848.05 | 65058.31 |
| OFFICE OF MANAGEMENT AND B | 137491.74 | 147628.58 | 148612.18 | 148612.18 |
| OFFICE OF PAYROLL ADMINIST | 74751.23 | 79013.73 | 79635.76 | 83551.34 |
| OFFICE OF THE ACTUARY | 67432.33 | 64398.00 | 86318.20 | 109554.71 |
| OFFICE OF THE COMPTROLLER | 76068.80 | 80812.27 | 83891.29 | 74745.20 |
| OFFICE OF THE MAYOR | 105785.29 | 110621.25 | 99321.82 | 97544.55 |
| POLICE DEPARTMENT | 62960.34 | 67144.11 | 70136.29 | 72621.08 |
| PUBLIC ADMINISTRATOR BRONX | 44224.80 | 45558.60 | 44190.60 | 44536.80 |
| PUBLIC ADMINISTRATOR KINGS | 39401.50 | 40011.83 | 39048.71 | 42846.62 |
| PUBLIC ADMINISTRATOR NEW Y | 44355.60 | 45523.80 | 46848.60 | 47194.20 |
| PUBLIC ADMINISTRATOR QUEEN | NA | 30750.00 | 31673.00 | 31673.00 |
| TAX COMMISSION | 79023.12 | 82229.11 | 85772.61 | 86457.50 |
| TAXI AND LIMOUSINE COMMISS | 57667.88 | 56518.08 | 59023.83 | 59757.87 |
| TEACHERS’ RETIREMENT SYSTE | 88712.47 | 96695.20 | 97252.62 | 98581.96 |
| TRIBOROUGH BRIDGE AND TUNN | 78429.73 | 78070.36 | 82043.89 | 85334.53 |
headcountbyagency<-salbyagency1%>%
select(agency, year, Count)%>%
spread(year, Count)
kable(headcountbyagency)
| agency | 2014 | 2015 | 2016 | 2017 |
|---|---|---|---|---|
| ADMINISTRATION FOR CHILDRE | 1432 | 1553 | 1482 | 1648 |
| BOARD OF CORRECTIONS | 4 | 5 | 4 | 9 |
| BOROUGH PRESIDENT-BRONX | 34 | 32 | 30 | 30 |
| BOROUGH PRESIDENT-BROOKLYN | 32 | 37 | 33 | 33 |
| BOROUGH PRESIDENT-MANHATTA | 28 | 31 | 24 | 29 |
| BOROUGH PRESIDENT-QUEENS | 34 | 39 | 34 | 35 |
| BOROUGH PRESIDENT-RICHMOND | 14 | 15 | 14 | 15 |
| BUSINESS INTEGRITY COMMISS | 52 | 64 | 59 | 71 |
| CAMPAIGN FINANCE BOARD | 9 | 10 | 6 | 4 |
| CITY CLERK | 42 | 53 | 45 | 51 |
| CIVIL SERVICE COMMISSION | 4 | 7 | 6 | 7 |
| CIVILIAN COMPLAINT REVIEW | 31 | 40 | 32 | 41 |
| COMMISSION ON HUMAN RIGHTS | 27 | 40 | 45 | 81 |
| CONFLICTS OF INTEREST BOAR | 15 | 15 | 15 | 19 |
| DEPARTMENT FOR THE AGING | 152 | 159 | 169 | 184 |
| DEPARTMENT OF BUILDINGS | 450 | 502 | 500 | 558 |
| DEPARTMENT OF BUSINESS SER | 121 | 111 | 72 | 81 |
| DEPARTMENT OF CITY PLANNIN | 57 | 67 | 77 | 113 |
| DEPARTMENT OF CITYWIDE ADM | 523 | 609 | 615 | 734 |
| DEPARTMENT OF CONSUMER AFF | 276 | 331 | 267 | 312 |
| DEPARTMENT OF CORRECTION | 278 | 414 | 441 | 517 |
| DEPARTMENT OF CULTURAL AFF | 28 | 30 | 29 | 30 |
| DEPARTMENT OF DESIGN AND C | 262 | 311 | 284 | 314 |
| DEPARTMENT OF EDUCATION | 3916 | 4477 | 4131 | 4731 |
| DEPARTMENT OF ENVIRONMENTA | 1054 | 1165 | 1126 | 1190 |
| DEPARTMENT OF FINANCE | 1009 | 1084 | 1015 | 1069 |
| DEPARTMENT OF HEALTH AND M | 1151 | 1239 | 1246 | 1507 |
| DEPARTMENT OF HOMELESS SER | 735 | 833 | 852 | 767 |
| DEPARTMENT OF INFORMATION | 595 | 730 | 767 | 771 |
| DEPARTMENT OF INVESTIGATIO | 67 | 70 | 81 | 84 |
| DEPARTMENT OF PARKS & RECR | 823 | 927 | 911 | 985 |
| DEPARTMENT OF PROBATION | 201 | 203 | 175 | 198 |
| DEPARTMENT OF SANITATION | 585 | 665 | 616 | 669 |
| DEPARTMENT OF TRANSPORTATI | 865 | 949 | 885 | 983 |
| DEPARTMENT OF VETERANS’ SE | NA | NA | 11 | 17 |
| DEPARTMENT OF YOUTH AND CO | 165 | 210 | 182 | 210 |
| DEPT. OF RECORDS AND INFOR | 24 | 27 | 21 | 32 |
| DISTRICT ATTORNEY-BRONX CO | 301 | 336 | 378 | 440 |
| DISTRICT ATTORNEY-KINGS CO | 418 | 492 | 424 | 479 |
| DISTRICT ATTORNEY-NEW YORK | 614 | 756 | 630 | 772 |
| DISTRICT ATTORNEY-QUEENS C | 190 | 226 | 227 | 267 |
| DISTRICT ATTORNEY-RICHMOND | 39 | 41 | 52 | 62 |
| DISTRICT ATTORNEY - SPECIA | 60 | 66 | 63 | 73 |
| EQUAL EMPLOYMENT PRACTICES | 5 | 7 | 6 | 7 |
| FINANCIAL INFORMATION SERV | 365 | 405 | 371 | 384 |
| FIRE DEPARTMENT | 470 | 531 | 519 | 554 |
| HOUSING PRESERVATION & DEV | 1020 | 1172 | 1157 | 1315 |
| HRA/DEPARTMENT OF SOCIAL S | 4204 | 4361 | 4022 | 4485 |
| INDEPENDENT BUDGET OFFICE | 2 | 2 | 2 | 2 |
| LANDMARKS PRESERVATION COM | 10 | 14 | 12 | 15 |
| LAW DEPARTMENT | 197 | 214 | 213 | 227 |
| MAYOR’S OFFICE OF CONTRACT | NA | NA | 3 | 27 |
| N.Y.C. HOUSING AUTHORITY | 1627 | 1623 | 1403 | 1413 |
| NEW YORK CITY FIRE PENSION | NA | NA | NA | 15 |
| NYC EMPLOYEES’ RETIREMENT | 137 | 148 | 142 | 155 |
| NYC POLICE PENSION FUND | 80 | 85 | 77 | 89 |
| OFFICE OF ADMINISTRATIVE T | 190 | 199 | 183 | 247 |
| OFFICE OF COLLECTIVE BARGA | 4 | 4 | 4 | 4 |
| OFFICE OF EMERGENCY MANAGE | 16 | 16 | 13 | 11 |
| OFFICE OF LABOR RELATIONS | 58 | 70 | 63 | 77 |
| OFFICE OF MANAGEMENT AND B | 19 | 19 | 17 | 17 |
| OFFICE OF PAYROLL ADMINIST | 114 | 127 | 127 | 134 |
| OFFICE OF THE ACTUARY | 3 | 4 | 5 | 7 |
| OFFICE OF THE COMPTROLLER | 330 | 397 | 321 | 320 |
| OFFICE OF THE MAYOR | 49 | 20 | 11 | 11 |
| POLICE DEPARTMENT | 873 | 935 | 892 | 958 |
| PUBLIC ADMINISTRATOR BRONX | 5 | 5 | 5 | 5 |
| PUBLIC ADMINISTRATOR KINGS | 4 | 6 | 7 | 8 |
| PUBLIC ADMINISTRATOR NEW Y | 5 | 5 | 5 | 5 |
| PUBLIC ADMINISTRATOR QUEEN | NA | 1 | 1 | 1 |
| TAX COMMISSION | 16 | 18 | 18 | 18 |
| TAXI AND LIMOUSINE COMMISS | 225 | 261 | 227 | 258 |
| TEACHERS’ RETIREMENT SYSTE | 172 | 161 | 160 | 167 |
| TRIBOROUGH BRIDGE AND TUNN | 211 | 199 | 202 | 223 |
salbytitle3$rawdiff <-(salbytitle3$'2017') - (salbytitle3$'2014')
salbytitle3$pctdiff<-salbytitle3$rawdiff / (salbytitle3$'2014')
kable(salbytitle3)
| Description | 2014 | 2015 | 2016 | 2017 | rawdiff | pctdiff |
|---|---|---|---|---|---|---|
| ACCOUNTANT | 59232.37 | 59810.29 | 61432.15 | 61347.32 | 2114.950 | 0.0357060 |
| ADM MANAGER-NON-MGRL FRM M1/M2 | 65725.33 | 69003.22 | 70738.63 | 74579.52 | 8854.195 | 0.1347151 |
| ADMINISTRATIVE MANAGER | 103706.77 | 115376.88 | 121463.16 | 114708.68 | 11001.912 | 0.1060867 |
| ADMINISTRATIVE PUBLIC INFORMAT | 99970.24 | 103492.72 | 108113.99 | 107232.37 | 7262.132 | 0.0726429 |
| ADMINISTRATIVE STAFF ANALYST | 90617.33 | 95360.05 | 99768.09 | 101363.81 | 10746.477 | 0.1185918 |
| AGENCY ATTORNEY | 74596.01 | 80065.72 | 82832.14 | 82382.40 | 7786.390 | 0.1043808 |
| ASSOCIATE STAFF ANALYST | 72748.61 | 76577.73 | 78850.36 | 80884.36 | 8135.755 | 0.1118338 |
| CLERICAL ASSOCIATE | 39627.53 | 40693.27 | 42076.05 | 42029.58 | 2402.052 | 0.0606157 |
| COMMUNITY ASSISTANT | 33534.27 | 34283.12 | 35337.83 | 35313.90 | 1779.640 | 0.0530693 |
| COMMUNITY ASSOCIATE | 42498.86 | 43292.98 | 45108.02 | 45137.98 | 2639.116 | 0.0620985 |
| COMMUNITY COORDINATOR | 60819.30 | 61427.02 | 63185.05 | 63542.80 | 2723.499 | 0.0447802 |
| COMPUTER ASSOC (OPERATIONS) | 63530.53 | 66012.44 | 70342.29 | 70338.94 | 6808.408 | 0.1071675 |
| COMPUTER ASSOC (SOFTWARE) | 73329.46 | 75713.89 | 78262.29 | 79275.68 | 5946.223 | 0.0810891 |
| COMPUTER SPECIALIST (SOFTWARE) | 94111.22 | 96781.59 | 100071.71 | 100063.92 | 5952.699 | 0.0632517 |
| COMPUTER SYSTEMS MANAGER | 113379.10 | 121987.87 | 125554.22 | 125615.52 | 12236.418 | 0.1079248 |
| EXECUTIVE AGENCY COUNSEL | 116984.68 | 124601.88 | 129527.76 | 130851.20 | 13866.527 | 0.1185328 |
| PRINCIPAL ADMINISTRATIVE ASSOC | 52217.00 | 54967.15 | 56521.14 | 58112.05 | 5895.050 | 0.1128952 |
| PROCUREMENT ANALYST | 57757.36 | 58825.03 | 60771.63 | 63340.25 | 5582.887 | 0.0966610 |
| SECRETARY | 40592.24 | 41800.83 | 43330.46 | 43391.77 | 2799.525 | 0.0689670 |
| STAFF ANALYST | 59146.88 | 62206.22 | 64356.33 | 65275.30 | 6128.420 | 0.1036136 |
#percent headcount increases by agency
headcountbyagency$rawdiff <-(headcountbyagency$'2017') - (headcountbyagency$'2014')
headcountbyagency$pctdiff<-headcountbyagency$rawdiff / (headcountbyagency$'2014')
#str(headcountbyagency)
kable(headcountbyagency)
| agency | 2014 | 2015 | 2016 | 2017 | rawdiff | pctdiff |
|---|---|---|---|---|---|---|
| ADMINISTRATION FOR CHILDRE | 1432 | 1553 | 1482 | 1648 | 216 | 0.1508380 |
| BOARD OF CORRECTIONS | 4 | 5 | 4 | 9 | 5 | 1.2500000 |
| BOROUGH PRESIDENT-BRONX | 34 | 32 | 30 | 30 | -4 | -0.1176471 |
| BOROUGH PRESIDENT-BROOKLYN | 32 | 37 | 33 | 33 | 1 | 0.0312500 |
| BOROUGH PRESIDENT-MANHATTA | 28 | 31 | 24 | 29 | 1 | 0.0357143 |
| BOROUGH PRESIDENT-QUEENS | 34 | 39 | 34 | 35 | 1 | 0.0294118 |
| BOROUGH PRESIDENT-RICHMOND | 14 | 15 | 14 | 15 | 1 | 0.0714286 |
| BUSINESS INTEGRITY COMMISS | 52 | 64 | 59 | 71 | 19 | 0.3653846 |
| CAMPAIGN FINANCE BOARD | 9 | 10 | 6 | 4 | -5 | -0.5555556 |
| CITY CLERK | 42 | 53 | 45 | 51 | 9 | 0.2142857 |
| CIVIL SERVICE COMMISSION | 4 | 7 | 6 | 7 | 3 | 0.7500000 |
| CIVILIAN COMPLAINT REVIEW | 31 | 40 | 32 | 41 | 10 | 0.3225806 |
| COMMISSION ON HUMAN RIGHTS | 27 | 40 | 45 | 81 | 54 | 2.0000000 |
| CONFLICTS OF INTEREST BOAR | 15 | 15 | 15 | 19 | 4 | 0.2666667 |
| DEPARTMENT FOR THE AGING | 152 | 159 | 169 | 184 | 32 | 0.2105263 |
| DEPARTMENT OF BUILDINGS | 450 | 502 | 500 | 558 | 108 | 0.2400000 |
| DEPARTMENT OF BUSINESS SER | 121 | 111 | 72 | 81 | -40 | -0.3305785 |
| DEPARTMENT OF CITY PLANNIN | 57 | 67 | 77 | 113 | 56 | 0.9824561 |
| DEPARTMENT OF CITYWIDE ADM | 523 | 609 | 615 | 734 | 211 | 0.4034417 |
| DEPARTMENT OF CONSUMER AFF | 276 | 331 | 267 | 312 | 36 | 0.1304348 |
| DEPARTMENT OF CORRECTION | 278 | 414 | 441 | 517 | 239 | 0.8597122 |
| DEPARTMENT OF CULTURAL AFF | 28 | 30 | 29 | 30 | 2 | 0.0714286 |
| DEPARTMENT OF DESIGN AND C | 262 | 311 | 284 | 314 | 52 | 0.1984733 |
| DEPARTMENT OF EDUCATION | 3916 | 4477 | 4131 | 4731 | 815 | 0.2081205 |
| DEPARTMENT OF ENVIRONMENTA | 1054 | 1165 | 1126 | 1190 | 136 | 0.1290323 |
| DEPARTMENT OF FINANCE | 1009 | 1084 | 1015 | 1069 | 60 | 0.0594648 |
| DEPARTMENT OF HEALTH AND M | 1151 | 1239 | 1246 | 1507 | 356 | 0.3092963 |
| DEPARTMENT OF HOMELESS SER | 735 | 833 | 852 | 767 | 32 | 0.0435374 |
| DEPARTMENT OF INFORMATION | 595 | 730 | 767 | 771 | 176 | 0.2957983 |
| DEPARTMENT OF INVESTIGATIO | 67 | 70 | 81 | 84 | 17 | 0.2537313 |
| DEPARTMENT OF PARKS & RECR | 823 | 927 | 911 | 985 | 162 | 0.1968408 |
| DEPARTMENT OF PROBATION | 201 | 203 | 175 | 198 | -3 | -0.0149254 |
| DEPARTMENT OF SANITATION | 585 | 665 | 616 | 669 | 84 | 0.1435897 |
| DEPARTMENT OF TRANSPORTATI | 865 | 949 | 885 | 983 | 118 | 0.1364162 |
| DEPARTMENT OF VETERANS’ SE | NA | NA | 11 | 17 | NA | NA |
| DEPARTMENT OF YOUTH AND CO | 165 | 210 | 182 | 210 | 45 | 0.2727273 |
| DEPT. OF RECORDS AND INFOR | 24 | 27 | 21 | 32 | 8 | 0.3333333 |
| DISTRICT ATTORNEY-BRONX CO | 301 | 336 | 378 | 440 | 139 | 0.4617940 |
| DISTRICT ATTORNEY-KINGS CO | 418 | 492 | 424 | 479 | 61 | 0.1459330 |
| DISTRICT ATTORNEY-NEW YORK | 614 | 756 | 630 | 772 | 158 | 0.2573290 |
| DISTRICT ATTORNEY-QUEENS C | 190 | 226 | 227 | 267 | 77 | 0.4052632 |
| DISTRICT ATTORNEY-RICHMOND | 39 | 41 | 52 | 62 | 23 | 0.5897436 |
| DISTRICT ATTORNEY - SPECIA | 60 | 66 | 63 | 73 | 13 | 0.2166667 |
| EQUAL EMPLOYMENT PRACTICES | 5 | 7 | 6 | 7 | 2 | 0.4000000 |
| FINANCIAL INFORMATION SERV | 365 | 405 | 371 | 384 | 19 | 0.0520548 |
| FIRE DEPARTMENT | 470 | 531 | 519 | 554 | 84 | 0.1787234 |
| HOUSING PRESERVATION & DEV | 1020 | 1172 | 1157 | 1315 | 295 | 0.2892157 |
| HRA/DEPARTMENT OF SOCIAL S | 4204 | 4361 | 4022 | 4485 | 281 | 0.0668411 |
| INDEPENDENT BUDGET OFFICE | 2 | 2 | 2 | 2 | 0 | 0.0000000 |
| LANDMARKS PRESERVATION COM | 10 | 14 | 12 | 15 | 5 | 0.5000000 |
| LAW DEPARTMENT | 197 | 214 | 213 | 227 | 30 | 0.1522843 |
| MAYOR’S OFFICE OF CONTRACT | NA | NA | 3 | 27 | NA | NA |
| N.Y.C. HOUSING AUTHORITY | 1627 | 1623 | 1403 | 1413 | -214 | -0.1315304 |
| NEW YORK CITY FIRE PENSION | NA | NA | NA | 15 | NA | NA |
| NYC EMPLOYEES’ RETIREMENT | 137 | 148 | 142 | 155 | 18 | 0.1313869 |
| NYC POLICE PENSION FUND | 80 | 85 | 77 | 89 | 9 | 0.1125000 |
| OFFICE OF ADMINISTRATIVE T | 190 | 199 | 183 | 247 | 57 | 0.3000000 |
| OFFICE OF COLLECTIVE BARGA | 4 | 4 | 4 | 4 | 0 | 0.0000000 |
| OFFICE OF EMERGENCY MANAGE | 16 | 16 | 13 | 11 | -5 | -0.3125000 |
| OFFICE OF LABOR RELATIONS | 58 | 70 | 63 | 77 | 19 | 0.3275862 |
| OFFICE OF MANAGEMENT AND B | 19 | 19 | 17 | 17 | -2 | -0.1052632 |
| OFFICE OF PAYROLL ADMINIST | 114 | 127 | 127 | 134 | 20 | 0.1754386 |
| OFFICE OF THE ACTUARY | 3 | 4 | 5 | 7 | 4 | 1.3333333 |
| OFFICE OF THE COMPTROLLER | 330 | 397 | 321 | 320 | -10 | -0.0303030 |
| OFFICE OF THE MAYOR | 49 | 20 | 11 | 11 | -38 | -0.7755102 |
| POLICE DEPARTMENT | 873 | 935 | 892 | 958 | 85 | 0.0973654 |
| PUBLIC ADMINISTRATOR BRONX | 5 | 5 | 5 | 5 | 0 | 0.0000000 |
| PUBLIC ADMINISTRATOR KINGS | 4 | 6 | 7 | 8 | 4 | 1.0000000 |
| PUBLIC ADMINISTRATOR NEW Y | 5 | 5 | 5 | 5 | 0 | 0.0000000 |
| PUBLIC ADMINISTRATOR QUEEN | NA | 1 | 1 | 1 | NA | NA |
| TAX COMMISSION | 16 | 18 | 18 | 18 | 2 | 0.1250000 |
| TAXI AND LIMOUSINE COMMISS | 225 | 261 | 227 | 258 | 33 | 0.1466667 |
| TEACHERS’ RETIREMENT SYSTE | 172 | 161 | 160 | 167 | -5 | -0.0290698 |
| TRIBOROUGH BRIDGE AND TUNN | 211 | 199 | 202 | 223 | 12 | 0.0568720 |
Plot - Select titles - percent salary increases by agency - all years
dfraises<- data.frame(read.csv("bestraises-selecttitles.csv"),stringsAsFactors = FALSE, strip.white=TRUE)
#p2 <- ggplot(df12, aes(x = reorder(agency, -pctincrease), y = pctincrease)) +
# geom_bar(stat = "identity")
#p2
dfraises$title <- factor(dfraises$title, levels = unique(dfraises$title)[order(dfraises$pctincrease, decreasing = TRUE)])
p1a <- plot_ly(
data = dfraises,
x = ~title,
y = ~pctincrease,
type = 'bar',
hoverinfo='text',
color="#D7BDE2",
text = ~paste(
'Agency: ', title,
'<br> Salary Percent Increase: ', pctincrease) ) %>%
layout(title="Salary increases 2014-2017, top 10 titles, select titles", margin = list(b = 200), xaxis = list(tickangle = 90))
p1a
Plot - Select titles - percent headcount increases by agency - all years
dfheadcount<- data.frame(read.csv("headcountbyagency-pct-increase-top10.csv"),stringsAsFactors = FALSE, strip.white=TRUE)
#p2 <- ggplot(df12, aes(x = reorder(agency, -pctincrease), y = pctincrease)) +
# geom_bar(stat = "identity")
#p2
dfheadcount$abbreviation <- factor(dfheadcount$abbreviation, levels = unique(dfheadcount$abbreviation)[order(dfheadcount$pctincrease, decreasing = TRUE)])
p1 <- plot_ly(
data = dfheadcount,
x = ~abbreviation,
y = ~pctincrease,
type = 'bar',
hoverinfo='text',
color="#D7BDE2",
text = ~paste(
'Agency: ', agency,
'<br> Headcount Percent Increase: ', pctincrease) ) %>%
layout(title="Headcount increases 2014-2017, top 10 agencies, select titles", margin = list(b = 200), xaxis = list(tickangle = 90))
p1
Plot - All Titles - Top 10 agencies with the most jobs over $10K, 2017
df3<- data.frame(read.csv("agency17high.csv"),stringsAsFactors = FALSE)
df3 %>% mutate_if(is.factor, as.character) -> df3
p2 <- df3 %>%
plot_ly(labels = ~ADDRESS, values = ~n) %>%
add_pie(hole = 0.6) %>%
layout(title = "Agencies with the most jobs over $10K", showlegend = T,
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
p2
Plot - All Titles - Top 10 titles with the most jobs over $10K, 2017
df4<- data.frame(read.csv("agency17high-titles.csv"),stringsAsFactors = FALSE)
df4 %>% mutate_if(is.factor, as.character) -> df4
p3 <- df4 %>%
plot_ly(labels = ~Description, values = ~n) %>%
add_pie(hole = 0.6) %>%
layout(title = "Titles with the most jobs over $10K", showlegend = T,
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
p3
hist(df17$sal,
main ="Distribution of salaries over $10K, 2017",
xlab="Salary",
border="black",
col="#58D68D",
xlim=c(0,200000),
ylim=c(0,35000),
breaks = seq(0, 350000, by = 5000)
#prob=TRUE
#breaks=c(0,10000,20000,30000,40000,50000,60000,70000,80000,90000,100000,110000,120000,130000,350000)
)
Plot - All Titles - Salaries between 85K and 90K
What constitutes the spike in the histogram between $85,000 and $95,000?
df5<- data.frame(read.csv("titles17-8590k.csv"),stringsAsFactors = FALSE)
df5 %>% mutate_if(is.factor, as.character) -> df5
p4 <- df5 %>%
plot_ly(labels = ~Description, values = ~n) %>%
add_pie(hole = 0.6) %>%
layout(title = "Titles between $85K and $90K", showlegend = T,
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
p4
Plot - Scatterplot of 2017 salaries with count of title
sal17a<-df17 %>%
group_by(Description) %>%
mutate(Count = n()) %>%
group_by(title, Description, Count) %>%
summarise_at(vars(sal), funs(round(mean(., na.rm=TRUE),0) ))%>%
arrange(desc(Count))
dfp5<-head(sal17a,100)
p5 <- plot_ly(
data = dfp5,
x = ~Count,
y = ~sal,
type = 'scatter',
mode = 'markers',
hoverinfo='text',
text = ~paste(
'Title: ', Description,
'<br> Employees: ', Count,
'<br> Avg Salary: ', sal)) %>%
layout(title="100 most popular titles with average salary by title, 2017")
p5
Plot - Scatterplot of 2017 salaries with count of title, <5000 title headcount
p5a <- plot_ly(
data = dfp5,
x = ~Count,
y = ~sal,
type = 'scatter',
mode = 'markers',
hoverinfo='text',
text = ~paste(
'Title: ', Description,
'<br> Employees: ', Count,
'<br> Avg Salary: ', sal)) %>%
layout(
xaxis = list(range = c(0, 5000)),
yaxis = list(range = c(0, 170000)),
title="Popular titles with average salary by title, <5000 serving in title, 2017")
p5a
Plot - Which titles have employees across the most agencies, excluding Community Boards?
Plot - For select titles, do some agencies pay more?
Best agencies to apply to if you want to work in these titles.
Plot - Titles with the greatest salary ranges
Best opportunities for promotion within the same title
Export:
Subset of selected 20 titles.
Summary of salaries by title with year over year comparisons.
Summary of salaries by agency with year over year comparisons.
Headcount by agency, wide format
Average salary by title, long format
Headcount and average salary by title, long format
Percent headcount increases by agency
2017 payroll only, complete cases, all titles
#changed to eval=FALSE after first run.
#subset of selected titles only
write.csv(dfsub1, file = "dfsub1.csv")
#average salary comparison with one column for each year
write.csv(salbytitle3, file = "sal-title-year-comparison.csv")
#headcount by agency with one column for each year
write.csv(headcountbyagency, file = "headcount-agency-year-comparison.csv")
#average salary comparison with years in one column
write.csv(salbytitle2, file = "sal-title-year-comparison-long.csv")
#headcount and average salary by agency with years in one column
write.csv(salbyagency1, file = "sal-agency-year-comparison-long.csv")
#percent headcount increases by agency
write.csv(headcountbyagency, file = "headcountbyagency-pct-increase.csv")
#2017 payroll only, complete cases, all titles
write.csv(df17, file = "df17.csv")