Построение изображения, где точки классифицируются по цвету - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть фрейм данных, и я хотел бы построить изображение, которое сортирует данные определенным образом.

company <- c("company1","company1","company1","company1","company1","company1","company1","company1","company1","company1","company1",
               "company1", "company1", "company1", "company1", "company1", 
               "company2","company2","company2","company2","company2","company2","company2","company2","company2","company2","company2",
               "company2", "company2", "company2", "company2", "company2")

salary <- c(24514, 23775, 24389, 23917, 23422, 23045, 24324, 24079, 22570, 23576, 23005, 23206, 23237, 24955, 22274, 22549,
            24655, 24798, 23597, 24921, 23506, 22976, 22967, 24641, 24905, 21413, 24469, 23321, 22858, 22870, 22957, 24646)
age <- c(44, 34, 36, 55, 47, 63, 52, 52, 29, 29, 33, 55, 47, 64, 45, 52,
         34, 44, 56, 45, 67, 33, 42, 32, 39, 59, 23, 45, 37, 54, 55, 62)



table <- data.frame(salary=salary, age=age, company=company)

mean_age <- mean(age)
mean_salary <- mean(salary)

Я строю график сюжета (возраст, зарплата).

Теперь я бы хотел покрасить все точки данных, которые находятся выше среднего значения и находятся под значением среднего значения.Если точка данных принадлежит компании1, я бы хотела покрасить ее в синий цвет, а если она принадлежит компании2, я бы хотела покрасить ее в красный цвет.

1 Ответ

1 голос
/ 24 сентября 2019

Вы можете сделать следующее:

# Fist add a column saying if the point should be colored or not
table$should_color=ifelse(table$salary>mean_salary & table$age < mean_age,TRUE,FALSE)

# Then add a color column: black if the point should not be colored, 
# and red or blue depending on the company
table$color=ifelse(table$should_color,
                  ifelse(table$company=="company1","blue","red"),
                  "black")

# Finally use the color column as plot color
plot(table$age, table$salary,col=table$color)

# Add lines for the mean to check the right part is colored
abline(h=mean_salary,lty=3)
abline(v=mean_age,lty=3)

Вы можете поместить все ifelse в одну строку:

table$color=ifelse(table$salary>mean_salary & table$age < mean_age,
                   ifelse(table$company=="company1","blue","red"),
                   "black")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...