2

私はRを初めて使用し、それを使用してスペクトルデータを処理しようとしています。私のデータは行ごとに配置され、特定のサンプルの各スペクトルが別の列に表示されます。データは次のようになります。

   Plant  Spec1  Spec2  Spec3  Spec4  Spec5  Spec6  Spec7  Spec8  Spec9 Spec10 Spec11 
1  samp1 0.0422 0.0475 0.0453 0.0426 0.0472 0.0527 0.0498 0.0424 0.0423 0.0434 0.0463 

多くの植物サンプル ( samp1samp10000) と約2000 の spec#測定値があります。spec1 to spec 5各サンプル ( 、その後)ごとに 5 つの仕様読み取り値のブロックの単純な平均を計算したいと思いますspec6 to spec10。つまり、個々の行ごとに 5 つの列の読み取り値ごとに平均します。

データを転置することを考えましたが、その後、各 5 ブロック平均を各植物サンプルの平均スペクトル読み取り値 (spec1-spec2000) で除算して、 5 ブロック単純平均データを正規化する必要があります。

R のコーディングをどのように進めればよいかについて何か提案はありますか?

4

1 に答える 1

2

これは、非常に簡単なアプローチの 1 つです。

まず、いくつかのサンプル データ:

set.seed(1)
x <- cbind(Plant = letters[1:5],
           as.data.frame(matrix(rnorm(60), ncol = 12)))
x
#   Plant         V1         V2         V3          V4          V5          V6
# 1     a -0.6264538 -0.8204684  1.5117812 -0.04493361  0.91897737 -0.05612874
# 2     b  0.1836433  0.4874291  0.3898432 -0.01619026  0.78213630 -0.15579551
# 3     c -0.8356286  0.7383247 -0.6212406  0.94383621  0.07456498 -1.47075238
# 4     d  1.5952808  0.5757814 -2.2146999  0.82122120 -1.98935170 -0.47815006
# 5     e  0.3295078 -0.3053884  1.1249309  0.59390132  0.61982575  0.41794156
#            V7         V8         V9        V10        V11        V12
# 1  1.35867955 -0.4149946 -0.1645236 -0.7074952  0.3981059  1.9803999
# 2 -0.10278773 -0.3942900 -0.2533617  0.3645820 -0.6120264 -0.3672215
# 3  0.38767161 -0.0593134  0.6969634  0.7685329  0.3411197 -1.0441346
# 4 -0.05380504  1.1000254  0.5566632 -0.1123462 -1.1293631  0.5697196
# 5 -1.37705956  0.7631757 -0.6887557  0.8811077  1.4330237 -0.1350546

次に、列「グループ」を見つけます。gl列グループの作成に使用:

myBreaks <- gl(ceiling((ncol(x)-1)/5), 5)[1:(ncol(x)-1)]

でこの情報を利用でき、探している値を取得するためにsapply便利に使用できます。rowMeans

cbind(x[1], 
      sapply(levels(myBreaks), function(y) {
        rowMeans(x[-1][myBreaks == y])
      }))
#   Plant           1             2          3
# 1     a  0.18778055  0.0031074991  1.1892529
# 2     b  0.36537233 -0.1083305812 -0.4896239
# 3     c  0.05997134  0.0646204262 -0.3515075
# 4     d -0.24235365  0.2024774526 -0.2798217
# 5     e  0.47255547 -0.0007180433  0.6489845
于 2013-06-21T07:25:19.323 に答える