我有许多类似的数据框:
GET
我想根据“值”列添加一列来指定颜色。最大的应该是红色,第二个应该是蓝色,最小的应该是绿色。
count value
1 0 7
2 1 230
3 2 5
在R中有一种简单的方法吗?谢谢!
答案 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)