R dplyr函数将mutate、top_frac和ifelse放在一起

R dplyr函数将mutate、top_frac和ifelse放在一起,r,if-statement,dplyr,R,If Statement,Dplyr,我在寻找方法来改变一个新的列,使用dplyr分配顶部和底部20%的值 这是我的代码,它不适合我 DF1 <- DF %>% group_by(Timepoint) %>% filter (!is.na (log2_Concentration)) %>% arrange (desc(log2_Concentration)) %>% mutate (top_bottom=ifelse (log2_Concentration=top_frac(.2), "

我在寻找方法来改变一个新的列,使用dplyr分配顶部和底部20%的值

这是我的代码,它不适合我

DF1 <- DF %>%
  group_by(Timepoint) %>%
  filter (!is.na (log2_Concentration)) %>%
  arrange (desc(log2_Concentration)) %>%
  mutate (top_bottom=ifelse (log2_Concentration=top_frac(.2), "TOP20PERC",
          ifelse (log2_Concentration=top_frac(-.2), "BOTTOM20PERC", "MID")))

ggplot(DF1, aes(x = Timepoint, y=log2_Concentration,fill=Timepoint)) + 
  geom_boxplot() +
  geom_jitter(size=1,position=position_jitter(0.2), aes(col=DF1$top_bottom)) +
  scale_colour_manual(values = c("red", "gray", "blue"), 
                      labels = c("TOP20PERC", "MID", "BOTTOM20PERC"))

DF1%
分组依据(时间点)%>%
过滤器(!is.na(log2_浓度))%>%
排列(描述(log2_浓度))%>%
突变(顶部\底部=ifelse(对数2 \浓度=顶部\分数(.2),“TOP20PERC”,
ifelse(log2_浓度=顶部分数(-.2),“底部20厘”,“中间”))
ggplot(DF1,aes(x=时间点,y=对数2_浓度,填充=时间点))+
geom_箱线图()+
几何抖动(大小=1,位置=位置抖动(0.2),aes(col=DF1$顶部\底部))+
比例颜色手册(数值=c(“红色”、“灰色”、“蓝色”),
标签=c(“TOP20PERC”、“MID”、“BOTTOM20PERC”))
我希望分配每个时间点,顶部20%,底部20%,其余为中间,这样我就可以在我的ggplot中给这些点上色

[


非常感谢大师们!

也许,您可以使用
分位数来获得顶部和底部的20%

library(dplyr)

DF %>%
  filter(!is.na(log2_Concentration)) %>%
  group_by(Timepoint) %>%
  mutate(top_bottom= case_when(
           log2_Concentration > quantile(log2_Concentration, 0.8) ~"TOP20PERC", 
           log2_Concentration < quantile(log2_Concentration, 0.2) ~"BOTTOM20PERC", 
           TRUE ~ "MID"))
库(dplyr)
DF%>%
过滤器(!is.na(log2_浓度))%>%
分组依据(时间点)%>%
变异(上下=情况下)(
log2_浓度>分位数(log2_浓度,0.8)~“TOP20PERC”,
log2_浓度<分位数(log2_浓度,0.2)~“底部20perc”,
真~“中”))

Hi,有没有建议在每个时间点取笑他们?当我执行此操作时,似乎不是这样。我希望的是,例如在时间点1,会有TOP20PERC、BOTTOM20PERC、MID,然后在时间点2出现类似的情况(分别与TOP20PERC、Bottom和MID分组)@user2533451我想这也是一样的。试着用
dplyr::mutate
而不是
mutate
。如果它仍然不起作用,你能提供一个可复制的例子来调试它吗?嗨,Ronak,我已经添加了编辑和我的ggplot。感谢查看绘图,不清楚为什么每个
时间点的答案都不起作用我们实际上是按
Timepoint
对其进行分组。我们需要一个可复制的示例来验证这一点。将
dput(DF)
添加到您的帖子中。您似乎已将问题主题从数据搜索改为绘图。不清楚您是否从数据中获得了上面的绘图,并且不喜欢其中的某些方面(或?)您正在尝试模仿它。在任何一种情况下,这都是一个新问题,您应该接受下面对您先前问题的回答并发布一个新问题,但这次您应该提供一个新问题。