我具有類似於這個許多數據幀:ř分配字符給列根據值
count value
1 0 7
2 1 230
3 2 5
我要添加的列按照「值」列,以指定顏色。最大的應該是紅色的,第二個應該是藍色的,最小的應該是綠色的。
count value color
1 0 7 blue
2 1 230 red
3 2 5 green
在R中有一種簡單的方法嗎?謝謝!
我具有類似於這個許多數據幀:ř分配字符給列根據值
count value
1 0 7
2 1 230
3 2 5
我要添加的列按照「值」列,以指定顏色。最大的應該是紅色的,第二個應該是藍色的,最小的應該是綠色的。
count value color
1 0 7 blue
2 1 230 red
3 2 5 green
在R中有一種簡單的方法嗎?謝謝!
我們可以使用rank
從base R
創建 '色'
df1$color <- c("green", "blue", "red")[rank(df1$value)]
(有趣)'c(「green」,「blue」,「red」)[order(order(df1 $ value))]'。 – lmo
您可以使用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")))
似乎只有使用'dplyr'才能分配一個新列 – Wen
我們可以使用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)
與'rank'即'C( 「綠」, 「藍」, 「紅」)[秩(DF1嘗試$ value)]' – akrun
謝謝,akrun!您的解決方案非常簡單和優雅。 – l0110