r根据值为列分配字符

时间:2017-08-17 15:57:16

标签: r

我有许多类似的数据框:

GET

我想根据“值”列添加一列来指定颜色。最大的应该是红色,第二个应该是蓝色,最小的应该是绿色。

  count value
1   0    7
2   1   230
3   2    5

在R中有一种简单的方法吗?谢谢!

3 个答案:

答案 0 :(得分:3)

我们可以使用rank中的base R来创建'颜色'

df1$color <- c("green", "blue", "red")[rank(df1$value)]

答案 1 :(得分:1)

您可以使用dplyr

df <- data.frame(count = c(0,1,2), value = c(7,230,5))
df <- df %>% 
  mutate(color = ifelse(value == min(value), "green", ifelse(value == max(value), "red", "blue")))

答案 2 :(得分:1)

我们可以使用dplyr::case_when

dt <- data.frame(count = c(0, 1, 2), value = c(7, 230, 5))

library(dplyr)

dt2 <- dt %>%
  mutate(color = case_when(
    value == max(value) ~ "red",
    value == min(value) ~ "green",
    TRUE                ~ "blue"
  ))

首先创建Rank列,然后根据Rank列分配值。

dt2 <- dt %>%
  mutate(Rank = dense_rank(value)) %>%
  mutate(color = case_when(
    Rank == 1 ~ "green",
    Rank == 2 ~ "blue",
    Rank == 3 ~ "Red"
  )) %>%
  select(-Rank)