我想为A.x
和A.y
制作图形并排放置。
aggregate(A~ B , mydata, mean)
aggregate(A~ B , mydata, sd)
mydata2 <- aggregate(A~B , mydata, mean)
mydata3 <- aggregate(A~B , mydata, sd)
library(dplyr)
mydata2 <- mydata2 %>% dplyr::select(B = 1, A = 2) %>% dplyr::mutate_if(is.numeric, ~ round(., 3))
mydata3 <- mydata3 %>% dplyr::select(B = 1, A = 2) %>% dplyr::mutate_if(is.numeric, ~ round(., 3))
mydata4<- merge(x = mydata2, y = mydata3, by = 'B', all.x = TRUE)
mydata4
library(ggplot2)
ggplot(data=mydata4) + geom_bar(aes(x=B, y = A.x, fill=A.y), stat = "identity", position="dodge")
结果不是我想要的。
这是mydata4
的图片。
我的目标是做这样的事情:
答案 0 :(得分:0)
知道了,您必须重塑数据。复制tjtis代码
library(tidyverse)
mydata4 <- mydata4 %>% pivot_longer(cols = c(A.x, A.y), names_to = 'name', values_to = 'val')
mydata4
# A tibble: 14 x 3
B name val
<chr> <chr> <dbl>
1 A A.x 1.96
2 A A.y 1.12
3 A/B A.x 2.25
4 A/B A.y 1.03
5 A/B/C A.x 2.5
6 A/B/C A.y 1.18
7 A/C A.x 3
8 A/C A.y 1.41
9 B A.x 2.72
10 B A.y 1.32
11 B/C A.x 2.75
12 B/C A.y 0.957
13 C A.x 2.73
14 C A.y 1.30
ggplot(data=mydata4) + geom_col(aes(x=B, y = val, fill=name), position="dodge")