1

R を使用しており、整数の標準ベクトルを、指定されたサイズのウィンドウ内に収まる各ベクトルの要素数を示す 2 列のデータ フレームに変換したいと考えています。

たとえば、次のベクトルを使用します。

    1, 75, 79, 90, 91, 92, 109, 120, 167, 198, 203, 204, 206, 224, 230, 
    236, 240, 245, 263, 344

50 のウィンドウ サイズに該当する値を調べた結果は、次のようになります。

50  1
100 5
150 2
200 2
250 8
300 1
350 1
400 0

最初の列を数値範囲とし、2 番目の列をその範囲内のカウントとします。

これは、1 ~ 50 の範囲ではその範囲に 1 つの要素があり、51 ~ 100 の場合は 5 つの要素があり、101 ~ 150 の場合は 2 つの要素があることを示しています。これを複数の分析に使用するため、柔軟性があります。

4

2 に答える 2

2

ここにいくつかの解決策があります。

cutと の使用table:

table(cut(vv,seq(min(vv),max(vv),50),include.lowest = TRUE))
   [1,51]  (51,101] (101,151] (151,201] (201,251] (251,301] 
        1         5         2         2         8         1 

使用findInterval:

table(findInterval(vv,seq(min(vv),max(vv),50)))

1 2 3 4 5 6 7 
1 5 2 2 8 1 1 

shingleラティスパッケージからの使用:

shingle(vv,cbind(seq(min(vv),max(vv),50) ,seq(50,max(vv)+50,50)))

Intervals:
  min max count
1   1  50     1
2  51 100     5
3 101 150     2
4 151 200     2
5 201 250     8
6 251 300     1
7 301 350     1

where `vv`:

    c(1, 75, 79, 90, 91, 92, 109, 120, 167, 198, 203, 204, 206, 224, 
    230, 236, 240, 245, 263, 344)
于 2013-10-22T21:48:19.587 に答える
2
table((as.integer(d/50)+1) * 50)

または整数除算を使用する

table((d%/%50+1) * 50)

それは次を出力します:

 50 100 150 200 250 300 350 
  1   5   2   2   8   1   1 
于 2013-10-24T03:42:48.610 に答える