7

1回のクリーンな急襲で単一因子のすべてのレベルをサブセット化する方法はありますか?

ケース: 列の 1 つが因子 (data$factor) であるデータ フレームがあり、因子の 1 つのレベルのみを含むサブセット データ フレームを作成するとします。これは、個別のサブセット コマンドを記述することで、要因の数が少ない場合に簡単に実行できます。しかし、多数のレベル (たとえば 50 以上のレベル) がある場合はどうなるでしょうか。このような場合に、50 以上のサブセット コマンドを記述せずにすべてのサブセットを作成するコマンドまたは巧妙な方法はありますか?

4

2 に答える 2

13

ループを作成する必要がない SPLIT 関数は、この問題を解決するための鍵です。

サブセット化(またはサブグループ化)する因子列がデータフレーム「データ」の列「因子」にあると仮定すると、次のようになります。

subsets<-split(data, data$factor, drop=TRUE)

これにより、因子の値に基づいてサブセットのリストが作成されます。リストは因子の数と同じ長さになります。

各サブセットを個別のデータ フレームに配置する必要がある場合は、次の手順でアクセスできます。

group1<-subsets[[1]]
group2<-subsets[[2]]
...
于 2013-07-29T02:14:09.857 に答える
0

次のように、要求された係数値のループを作成できます。

vals <- sort (unique (data[[factor]]))
for (i in 1:length(vals)) {
   subset <- (data[[factor]]==vals[i])
   n <- length (data[[factor]][(subset)])
   if (n >= min.n) {
      ...
   }
}
于 2013-07-28T11:54:46.483 に答える