簡體   English   中英

組之間的ggplot差異

[英]ggplot differences between groups

我有一個包含不同試驗組的df,並且我想制作一個僅顯示ggplot中試驗之間的增量的條形圖。 很難讓ggplot理解我想要一個df中的差異。 另外,某些治療方法未在第二次試驗中得到體現,因此我只想將其計為0(即,增量為=試驗1-0)。

 set.seed(1)

 df <- data.frame((matrix(nrow=175,ncol=4)))
 colnames(df) <- c("group","trial","count","hour")
 df$group <- rep(c("A","B","C","D","A","B","D"),each=25)
 df$trial <- rep(c(rep(1,times=100),rep(2,times=75)))
 df$count <- runif(175,0,50)
 df$hour <- rep(1:25,times=7)


 df2 <- aggregate(df[,3:4],list(df$group,df$trial),mean)
 colnames(df2)[1:2] <- c("group","trial") 

那就是我要去的地方。 我已經為(group * trial)繪制了單獨的條形圖,但是我不知道如何減去它們。 我想要x = group和y = delta(trial)的圖。

我嘗試了這個:

 ggplot(df2 %>% group_by(group) %>% delta=diff(count),
   aes(x=group,y=delta)) + geom_bar()

我遇到過類似的帖子,但沒有運氣。

這應該可以解決問題:

ggplot(df2 %>% group_by(group) %>% summarise(delta=ifelse(nrow(.)>1,diff(count),0)),
       aes(x=group,y=delta)) + geom_col()#geom_bar(stat="identity")

問題是,當只有一個輸入值時,“ diff”返回的不是值0而是一個長度為0的向量。 另外,我建議geom_col使用geom_bar ,而是建議使用geom_col 您應該考慮的另一件事是,差異結果取決於數據幀的順序。 因此,我建議使用

ggplot(df2 %>% group_by(group) %>% summarise(delta_trial_1_trial_2=
                                           ifelse(length(trial)>1,
                                                  count[trial==2]-count[trial==1],0)),
   aes(x=group,y=delta_trial_1_trial_2)) + geom_col()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM