R 表示两个响应变量的线形图

R 表示两个响应变量的线形图,r,R,我试图分析一个数据集,其中每个复制的每个处理都有两个响应变量X和Y: Treatment Rep X Y N1 1 10.18 14.38 N1 2 13.53 14.38 N2 1 15.34 18.28 N2 2 10.4 7.14 N3 1 8.57 22.57 N3 2 13.95 19.9 N4 1 16.69 NA N4 2 14.33 9.32 N5 1 NA NA N5 2 15.74 15.39 我想计算每个反应变量的每个治疗的平均值、s

我试图分析一个数据集,其中每个复制的每个处理都有两个响应变量X和Y:

Treatment   Rep X   Y
N1  1 10.18 14.38
N1  2 13.53 14.38
N2  1 15.34 18.28
N2  2 10.4  7.14
N3  1 8.57  22.57
N3  2 13.95 19.9
N4  1 16.69 NA
N4  2 14.33 9.32
N5  1 NA    NA
N5  2 15.74 15.39
我想计算每个反应变量的每个治疗的平均值、sd和se值。然后我想在x轴上画一个处理过的线图;X和Y各两行,带置信区间误差条

我用它来计算和绘制:

df<-Data1 %>%
  group_by(Treatment, Rep) %>% 
  summarise_at(vars(-group_cols()), list(mean = ~mean(X, Y, na.rm = TRUE), 
                                         sd = ~sd(X, Y, na.rm = TRUE),
                                         se= ~sd(X, Y, na.rm = TRUE)/sqrt(n()))) %>% 
  summarise_at(vars(mean:se), mean, na.rm = TRUE)


p<- ggplot(data=na.omit(df),aes(reorder(Treatment, mean, sum), mean, group = 1))+
  geom_line(stat = "identity", colour="black", width = 1) +
  geom_errorbar(aes(x=Line, ymin = mean-se, ymax = mean+se),
                width = 0.25, color = "black") + scale_y_continuous(expand = c(0,0), limits = c(0, 40)) + theme_classic() + theme(axis.text.x = element_text(size= 5.5, angle = 45, hjust = 1, colour = "black",face = "bold")) + theme(axis.text.y = element_text(size= 8, hjust = 1, colour = "black",face = "bold"))
谢谢你的帮助

您的数据:

Data1 = structure(list(Treatment = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 
4L, 4L, 5L, 5L), .Label = c("N1", "N2", "N3", "N4", "N5"), class = "factor"), 
    Rep = c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), X = c(10.18, 
    13.53, 15.34, 10.4, 8.57, 13.95, 16.69, 14.33, NA, 15.74), 
    Y = c(14.38, 14.38, 18.28, 7.14, 22.57, 19.9, NA, 9.32, NA, 
    15.39)), class = "data.frame", row.names = c(NA, -10L))
定义用于计算sem的函数:

SE = function(x){
  x=x[!is.na(x)]
  sd(x)/sqrt(length(x))
}
加载库并将表格旋转到更长的位置,然后计算每个处理中每个响应的平均值和sem:

library(dplyr)
library(tidyr)

df<-Data1 %>%
  pivot_longer(-c(Treatment,Rep)) %>% 
  group_by(Treatment,name) %>% 
  summarize(mean=mean(value,na.rm=TRUE),SE=SE(value))
希望这就是你想要的。。如果没有,请在问题中详细说明


请展示您在编码这方面的最佳尝试。我已经在问题中添加了。非常感谢。
p<- ggplot(df,aes(x=Treatment,y=mean,colour=name))+
geom_line(aes(group=name)) +
geom_errorbar(aes(ymin = mean-SE, ymax = mean+SE),
                width = 0.25) + 
scale_y_continuous(expand = c(0,0), limits = c(0, 40)) + 
theme_classic() + theme(axis.text.x = element_text(size= 5.5, 
angle = 45, hjust = 1, colour = "black",face = "bold")) +
theme(axis.text.y = element_text(size= 8, hjust = 1, 
 colour = "black",face = "bold"))