【发布时间】:2021-01-29 11:18:06
【问题描述】:
我有一个看起来像这样的数据框
value <- c(0,0.1,0.2,0.4,0,0.05,0.05,0.5)
time <- c(0,0,0,0,1,1,1,1)
ID <- c(1,2,3,4,1,2,3,4)
test <- data.frame(value, time, ID)
value time ID
1 0.00 0 1
2 0.10 0 2
3 0.20 0 3
4 0.40 0 4
5 0.00 1 1
6 0.05 1 2
7 0.05 1 3
8 0.50 1 4
我想当时间点 '0' 的值大于 0.1 时分配颜色“红色” 到所有 ID 值,当值小于 0.1 时分配颜色“蓝色” 我希望我的 data.frame 看起来像这样
value time ID color
1 0.00 0 1 blue
2 0.10 0 2 blue
3 0.20 0 3 red
4 0.40 0 4 red
5 0.00 1 1 blue
6 0.05 1 2 blue
7 0.05 1 3 red
8 0.50 1 4 red
这是我迄今为止尝试过的,但我没有得到所有时间点的颜色
test %>%
group_by(ID) %>%
mutate(color = case_when(value > 0.1 & time ==0 ~ "red",
value < 0.1 & time ==0 ~ "blue"))
非常感谢任何提示
更新::编辑
我看到的一种方法是添加
test %>%
group_by(ID) %>%
mutate(color = case_when(value > 0.1 & time ==0 ~ "red",
value < 0.1 & time ==0 ~ "blue"))%>%
tidyr:fill(color, .diretction ="updown")
还有其他建议吗?
【问题讨论】: