1

複数の列の値の平均が最も類似している行のサブセット (1 つのサブセットに 6 行を含める必要があります) を見つける可能性を探しています。したがって、R で data.frame を検索し、それぞれ 6 行のサブセットを作成して、最終的にこれらのサブセットが互いに最も類似するようにしたいと考えています。類似性は、ユークリッド距離として測定できます(@David Robinsonが指摘したように)。

私のデータは次のようになります。

  TID   Cue1  Cue2  Cue3
  1    2.06   1.90  3.82
  2    5.18   4.13  5.10
  3    5.09   2.85  2.80
  4    1.93   4.14  4.75
  ...   ...    ...   ...       

Rに次のような方法があるかどうか知りたいです。

-たとえば、それぞれ6行を含む4つのサブセットを与えてください.4つのサブセットは、 Cue1、Cue2、およびCue3の手段で最も類似性が高く(SDは重要ではありません)、各サブセットには一意の行が含まれています(サブセット間で重複する行はありません)

1つの例は次のとおりです(私の例のデータと一致しません):

-サブセット 1 にはTID 1、TID 6、TID 14、TID 28、TID 39、TID 50 が含まれ、このサブセットにはキュー平均 (Cue1 = 3,2; Cue2 = 2,5; Cue3 = 4) があります。

-サブセット 2 にはTID 3、TID 12、TID 20、TID 40、TID 54、TID 59 が含まれ、このサブセットにはキュー平均 (Cue1 = 3,3; Cue2 = 2,6; Cue3 = 4,1) があります。

そのため、2 つのサブセットはキュー平均で非常に (最も) 類似しています。R は、サブセットを形成する行番号 (または TID 値) を指定する必要があります。

Rでこれを行う可能性はありますか?

私のデータがどのように見えるかの再現可能な例を次に示します。

    mysamp <- function(n, m, s, lwr, upr, nnorm) {
  set.seed(1)
  samp <- rnorm(nnorm, m, s)
  samp <- samp[samp >= lwr & samp <= upr]
  if (length(samp) >= n) {
    return(sample(samp, n))
  }  
 } 
Cue1 <- mysamp(n=60, m=3, s=1.5, lwr=1, upr=6, nnorm=1000)
Cue2 <- mysamp(n=60, m=3, s=2.5, lwr=1, upr=6, nnorm=1000)
Cue3 <- mysamp(n=60, m=4, s=1.5, lwr=1, upr=6, nnorm=1000)

df <- data.frame(TID= 1:60, Cue1= Cue1, Cue2= Cue2, Cue3= Cue3)
4

1 に答える 1