[英]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.