1

私は R と統計全般に非常に慣れていないため、tapply() を機能させるのに問題があります。15 列と数千行のデータ フレームがあります。x はデータフレームy1<-((x>0)&(x<=5))の列名です。次に、これらの論理ベクトルを結合し、factor() を使用してグループ化係数に変換します。これですべてがうまく機能しているように見えます。

tapply(dataframe, group, sample, size=20)問題は、グループ化係数を指定してtapply() を使用しようとするとgroup、「引数は同じ長さでなければなりません」というエラーが発生することです。試してみるlength(dataframe)と、データフレームの列数 (15 のみ) がlength(group)返されますが、行数 (千) が返されます。論理ベクトルとグループ化係数を作成する方法にエラーはありますか?

Maxim.K が提案した dput() からの出力は次のとおりです (申し訳ありませんが、あまり整頓されていません)。

 structure(list(Lat = c(-90L, -90L, -90L, -90L, -90L, -90L, -90L, 
-90L, -90L, -90L, -90L, -90L, -90L, -90L, -90L), Lon = -180:-166, 
    Jan = c(2.79, 2.79, 2.79, 2.79, 2.79, 2.79, 2.79, 2.79, 2.79, 
    2.79, 2.79, 2.79, 2.79, 2.79, 2.79), Feb = c(2.35, 2.35, 
    2.35, 2.35, 2.35, 2.35, 2.35, 2.35, 2.35, 2.35, 2.35, 2.35, 
    2.35, 2.35, 2.35), Mar = c(0.49, 0.49, 0.49, 0.49, 0.49, 
    0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49
    ), Apr = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
    May = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Jun = c(0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Jul = c(0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Aug = c(0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Sep = c(0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Oct = c(1.75, 1.75, 1.75, 
    1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 
    1.75, 1.75), Nov = c(2.77, 2.77, 2.77, 2.77, 2.77, 2.77, 
    2.77, 2.77, 2.77, 2.77, 2.77, 2.77, 2.77, 2.77, 2.77), Dec = c(2.65, 
    2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 2.65, 
    2.65, 2.65, 2.65, 2.65), Ann = c(1.07, 1.07, 1.07, 1.07, 
    1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 1.07, 
    1.07)), .Names = c("Lat", "Lon", "Jan", "Feb", "Mar", "Apr", 
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Ann"
), row.names = c(NA, 15L), class = "data.frame")

グループの場合:

先頭から 15 個の値 (dput() から)

  structure(c(8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
    8L, 8L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8"), class = "factor")

...そして尻尾から

structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8"), class = "factor")

tapply() (サイズ 20) を使用して、8 つのカテゴリすべてからランダム サンプルを取得しようとしています。

[編集] 当然のことながら、問題は質問と要件ではなく、私の理解にありました。私は質問を読み違えました。実際、データ フレーム全体からではなく、1 つの列からのみサンプリングすることになっていました。

4

1 に答える 1