Assuming your data.frame is called "temp", just use aggregate :
aggregate(. ~ Job, temp, sum)
The logic is that TRUE and FALSE correspond to the numeric values โโ"1" and "0", so you can just use sum when aggregating.
And to add a "tidyverse" solution for completeness:
library(tidyverse) temp %>% group_by(Job) %>% summarise_all(sum) # # A tibble: 3 x 4 # Job CC. Java Python # <chr> <int> <int> <int> # 1 Developer 2 2 1 # 2 Student 0 2 1 # 3 Sysadmin 1 0 0
Here is your data in a format that is easy to copy and paste. This was obtained using dput(your-actual-data-frame-name) and this is what you should use in the future when posting R questions to the stack overflow.
temp <- structure(list(Job = c("Student", "Developer", "Developer", "Sysadmin", "Student"), CC. = c(FALSE, TRUE, TRUE, TRUE, FALSE), Java = c(TRUE, TRUE, TRUE, FALSE, TRUE), Python = c(FALSE, TRUE, FALSE, FALSE, TRUE)), .Names = c("Job", "CC.", "Java", "Python"), class = "data.frame", row.names = c(NA, -5L))