我有一个数据集中的磷浓度为17天(浓度是累积的,因此从第1天到第102天在所有情况下都增加)。有22种不同的处理方式(列= Trmt)。每个Trmt有3个等级(等级= X,Y,Z)。每个级别2次测量,每个Trmt共6次。
我的目标是使用ggplot2通过浓度(y轴)绘制3天的日线图(x轴;数字)。数据应按Trmt,级别和天分组,总共进行51次测量(3行x 17天)。
我的数据如下:
structure(list(Trmt = structure(c(2L,2L,1L,4L,3L,6L,5L,8L,7L,10L,9L,12L,11L,14L,13L,16L,15L,18L,17L,20L,19L,22L,21L,21L),.Label = c("A01nF","A01yT","A02nF","A02yT","A03nF","A03yT","A04nF","A04yT","A05nF","A05yT","A06nF","A06yT","A07nF","A07yT","A08nF","A08yT","A10nF","A10yT","A11nF","A11yT","A13nF","A13yT"),class = "factor"),Level = structure(c(1L,3L),.Label = c("X","Y","Z"),Day1 = c(3L,4L),Day2 = c(10L,7L),Day4 = c(11L,14L),Day7 = c(19L,20L),Day10 = c(24L,23L,25L,24L,Day13 = c(29L,29L,26L,27L,30L,28L,26L),Day18 = c(32L,31L,32L,34L,33L,35L,35L),Day23 = c(39L,40L,38L,37L,36L,39L,38L),Day28 = c(42L,43L,44L,42L,45L,41L,44L),Day35 = c(50L,50L,48L,46L,49L,47L,46L),Day42 = c(52L,51L,53L,54L,55L,52L,52L),Day52 = c(59L,57L,56L,58L,59L,60L,60L),Day62 = c(67L,65L,68L,69L,70L,66L,67L,70L),Day72 = c(74L,74L,71L,75L,72L,73L,75L),Day82 = c(76L,78L,79L,77L,80L,76L,77L),Day92 = c(85L,84L,85L,83L,82L,81L,85L),Day102 = c(89L,88L,90L,87L,89L,86L,88L)),class = "data.frame",row.names = c(NA,-132L))
所需的库: tidyr,plyr,ggplot2
到目前为止,我采取的步骤是:
将数据转换为长格式(df =数据集名称):
Fig1 <- gather(df,day,phosphorus,Day1:Day102,factor_key=TRUE)
将因子日更改为数字
df$day2 <-revalue(df$day,c("Day1"="1","Day2"="2","Day4"="4","Day7"="7","Day10"="10","Day13"="13","Day18"="18","Day23" = "23","Day28" = "28","Day35" = "35","Day42" = "42","Day52" = "52","Day62" = "62","Day72" = "72","Day82" = "82",Day92" = "92","Day102" = "102"))
和
df$day3 <- as.numeric(as.character(df$day2))
按Trmt,级别和第3天分组
GroupedDF <- df %>% group_by(Trmt,Level,day3)
GroupedCO2M <- GroupedDF %>% summarise(disp = mean(phosphorus))
我现在想通过考虑Trmt和Level来减去值,从而将行数从102减少到51。我想从相应的'nF'格中减去'yT'Trmt格,对于每个Level( X,Y和Z)。例如,从A01nf_X减去A01yT_X,从A01nf_Y减去A01yT_Y,从A01nf_Z减去A01yT_Z,依此类推。这应该总共得到51分,每个等级17分。
以下是我的想法:
非常感谢您的任何建议。