0

私はこのようなテーブルを持っています

ID Length OHR
A  23     .34
B  45     .23
C  89     .24

これを処理して、長さと OHR が特定の範囲内にある値のカウントがセルに含まれる別のテーブルを生成したいと思います (たとえば、長さが 10 未満のすべての値の 2 には 0 の間の OHR 値があります)。そして0.1など...)

Length/OHR 0-0.1 0.1-0.2 0.2-0.3
0-10        2       3       4
11-20       3       3       4
20-30       1       7       8

1 つの列の場合はカットを使用してカウントを取得できますが、ここでは 2 つの列に基づいてカウントを見つける必要があります。これを実現するために、他のプログラミング言語の条件文を組み合わせて使用​​することもできますが、コードが乱雑になり、さらに遅くなります。Rがそのようなデータを操作するように設計されていることを考えると、Rでこれを実現するエレガントな方法があるかもしれないと思いました。

どんな助けでも大歓迎です。

RAM。

4

1 に答える 1

0

データを模倣するダミー データ フレームを作成します。

set.seed(123)
df <- data.frame(Length = floor(runif(10,0,100)), OHR = runif(10))
head(df)
#  Length       OHR
#1     28 0.9568333
#2     78 0.4533342
#3     40 0.6775706
#4     88 0.5726334
#5     94 0.1029247
#6      4 0.8998250

グループ化クラスを作成するために使用cutします (必要に応じてオプションの引数を調整しbreaksます)

df$Length.cut <- cut(df$Length, breaks = 10*(0:10))
df$OHR.cut <- cut(df$OHR, breaks = (0:10)/10)

次にtable( , )、必要に応じて 2D 分割表を作成するために使用します。

table(df$Length.cut, df$OHR.cut)

もちろん、追加の列の割り当ては有益なだけです (何cutが行われているかを確認するため)。

table(cut(df$Length, breaks = 10*(0:10)), cut(df$OHR, breaks = (0:10)/10))

中間ステップなし。

于 2013-11-07T01:55:29.973 に答える