2

すべての変数について、R のマトリックス内の実際の応答パターンの数を取得するにはどうすればよいですか? 例として、3 つの変数 a、b、c と 3 つの観測値で構成されるデータセットがあるとします。

a<-c(0,1,0)
b<-c(1,0,1)
c<-c(1,0,1)
d<-cbind(a,b,c)

行列の結果

d

私が間違っていなければ、2 つの応答パターンがあります。2 つの観測に 0,1,1 が存在し、1 つの観測に 1,0,0 が存在します。はるかに大きなデータセットでこれを計算する必要がある場合、それを教えてくれる関数はありますか?

ありがとう

4

4 に答える 4

2

別の可能性は、を使用することduplicated()です。これは、一意の応答パターンの数ではなく、単純にその数を取得します。

length( which( !duplicated(d) ) )

# [1] 2

apply()これは、 and/orを使用するよりも大幅に高速に見えますtable()

于 2012-04-26T14:32:01.320 に答える
1

関心のある列の選択を可能にするテーマのバリエーション。

d<-data.frame(d)
d$combined<-with(d, paste(a,b,c))
table(d$combined)

0 1 1 1 0 0 
    2     1

data.frame(table(d$combined))

Var1 Freq
1 0 1 1    2
2 1 0 0    1

ヒント については、R で一意の値をカウントするを参照してください。

于 2012-04-26T11:22:05.120 に答える
1

何、まだddply解決策がないのですか?あなたplyrのファンは遅くなってきています...

> library(plyr)
> d <- as.data.frame(d)
> ddply(d, ~a+b+c, summarize, n=length(c))
  a b c n
1 0 1 1 2
2 1 0 0 1

paste数式は、入力を減らすために次のように作成することもできます。

f <- paste("~", paste(names(d), collapse="+"))
ddply(d, as.formula(f), summarize, n=length(c))
于 2012-04-26T15:25:41.710 に答える
1

あなたは試すことができます:

table(apply(d, 1, paste, collapse=""))
于 2012-04-26T10:26:22.247 に答える