library(reshape)
df<-read.table('/Users/lilibei/Desktop/df.txt',header = 1)
head(df)
##   Var Loca rep year FT WGP FBP NFFB HNFFB  YPBF   PH   FBL   FBA
## 1  N1   AY   1 2014 64 114  50 5.88  13.8 70.17 42.0    NA 66.67
## 2  N2   AY   1 2014 62 107  45 5.44  13.2 90.00 52.2    NA 74.17
## 3  N3   AY   1 2014 61 105  44 5.38  12.6 90.00 38.8 16.33 59.17
## 4  N4   AY   1 2014 62 114  52 5.57  15.8 90.00 49.0 13.33 68.33
## 5  N5   AY   1 2014 62 109  47 4.63  15.4 90.00 46.4 11.33 74.17
## 6  N6   AY   1 2014 62 105  43 4.67  15.4 87.69 44.0 11.50 60.83
dim(df)
## [1] 6035   13
new_df<-melt(df,id=names(df)[1:4],variable_name = "trait")
head(new_df)
##   Var Loca rep year trait value
## 1  N1   AY   1 2014    FT    64
## 2  N2   AY   1 2014    FT    62
## 3  N3   AY   1 2014    FT    61
## 4  N4   AY   1 2014    FT    62
## 5  N5   AY   1 2014    FT    62
## 6  N6   AY   1 2014    FT    62
dim(new_df)
## [1] 54315     6
d1<-cast(new_df,Var+Loca+rep+year~trait)
head(d1)
##   Var Loca rep year FT WGP FBP NFFB    HNFFB       YPBF       PH      FBL
## 1  N1   AY   1 2014 64 114  50 5.88 13.80000 70.1700000 42.00000       NA
## 2  N1   AY   1 2015 68 113  45 4.67 13.00000 82.9300000 54.67000 23.00000
## 3  N1   AY   1 2016 68 111  43 5.50 16.33333  0.8131868 81.50000 30.55556
## 4  N1   AY   2 2014 63 108  45 5.80 13.80000 90.0000000 44.00000  8.00000
## 5  N1   AY   2 2015 73 110  37 5.00 11.33000         NA 47.67000 21.00000
## 6  N1   AY   2 2016 68 108  40 5.50 19.00000  0.6466165 99.33333 29.22222
##        FBA
## 1 66.67000
## 2 65.00000
## 3 56.60000
## 4 65.00000
## 5 75.00000
## 6 44.14444
dim(d1)
## [1] 6035   13
#列出所有性状在2014年AY环境下三个重复的数据
d2<-cast(new_df,Var~trait+rep,subset=(Loca=="AY"&year=="2014"))
head(d2)
##    Var FT_1 FT_2 FT_3 WGP_1 WGP_2 WGP_3 FBP_1 FBP_2 FBP_3 NFFB_1 NFFB_2
## 1   N1   64   63   62   114   108   109    50    45    47   5.88    5.8
## 2  N10   62   61   62   110   108   110    48    47    48   5.75    5.5
## 3 N100   61   61   61   102   109   106    41    48    45   5.78    5.8
## 4 N101   62   62   61   105   105   106    43    43    45   5.38    5.2
## 5 N102   61   61   60   102   105   103    41    44    43   5.20    5.4
## 6 N103   62   65   67   121   117   120    59    52    53   6.11    6.2
##   NFFB_3 HNFFB_1 HNFFB_2 HNFFB_3 YPBF_1 YPBF_2 YPBF_3 PH_1 PH_2 PH_3 FBL_1
## 1    5.7    13.8    13.8      NA  70.17  90.00  81.43 42.0 44.0   NA    NA
## 2    5.2    18.8    14.8      NA  85.26  90.00  88.13 52.0 46.2   NA 16.67
## 3    5.0    12.4    15.0      NA  90.00  85.71  90.00 37.8 43.0   NA  8.33
## 4    4.8    12.8    12.6      NA  90.00  90.00  90.00 38.0 37.4   NA  8.50
## 5    5.1    15.8    15.0      NA  84.00  90.00  80.00 44.2 40.4   NA  6.17
## 6    7.7    19.4    23.6      NA  88.57  83.25  83.18 65.0 68.4   NA 16.67
##   FBL_2 FBL_3 FBA_1 FBA_2 FBA_3
## 1  8.00 10.67 66.67 65.00 63.33
## 2  5.50  4.33 69.17 63.33 60.00
## 3  8.00  9.17 68.33 81.67 66.67
## 4  6.83  4.17 75.00 61.67 61.67
## 5  6.67  3.83 56.67 63.33 60.00
## 6  9.00 14.33 61.67 70.00 66.67
dim(d2)
## [1] 355  28
#列出FT在2014年AY环境下三个重复的数据
d3<-cast(new_df,Var~trait+rep,subset=(Loca=="AY"&year=="2014"&trait=="FT"))
head(d3)
##    Var FT_1 FT_2 FT_3
## 1   N1   64   63   62
## 2  N10   62   61   62
## 3 N100   61   61   61
## 4 N101   62   62   61
## 5 N102   61   61   60
## 6 N103   62   65   67
dim(d3)
## [1] 355   4
#列出所有性状在2014年AY环境下三个重复的数据的平均值
d4<-cast(new_df,Var~trait,subset=(Loca=="AY"&year=="2014"),fun.aggregate = mean,na.rm=1)
head(d4)
##    Var       FT      WGP      FBP     NFFB HNFFB     YPBF   PH       FBL
## 1   N1 63.00000 110.3333 47.33333 5.793333  13.8 80.53333 43.0  9.335000
## 2  N10 61.66667 109.3333 47.66667 5.483333  16.8 87.79667 49.1  8.833333
## 3 N100 61.00000 105.6667 44.66667 5.526667  13.7 88.57000 40.4  8.500000
## 4 N101 61.66667 105.3333 43.66667 5.126667  12.7 90.00000 37.7  6.500000
## 5 N102 60.66667 103.3333 42.66667 5.233333  15.4 84.66667 42.3  5.556667
## 6 N103 64.66667 119.3333 54.66667 6.670000  21.5 85.00000 66.7 13.333333
##        FBA
## 1 65.00000
## 2 64.16667
## 3 72.22333
## 4 66.11333
## 5 60.00000
## 6 66.11333
dim(d4)
## [1] 355  10
#列出FT在2014年AY环境下三个重复的数据的平均值
d5<-cast(new_df,Var~trait,subset=(Loca=="AY"&year=="2014"&trait=="FT"),fun.aggregate = mean)
head(d5)
##    Var       FT
## 1   N1 63.00000
## 2  N10 61.66667
## 3 N100 61.00000
## 4 N101 61.66667
## 5 N102 60.66667
## 6 N103 64.66667
dim(d5)
## [1] 355   2