2012-05-04 5 views
1

私は同様のデータセットがあります。表生成R

val<-c("Y","N") 
test<-data.frame(age=rnorm(n=100,mean=50,sd=10),var1=sample(val,100,T),var2=sample(val,100,T),var3=sample(val,100,T),sex=sample(c("F","M"),100,T)) 

I'dをHmiscを使用して、各カテゴリの平均年齢を報告要約を作成したいです。

library(Hmisc) 
summary.formula(age~sex+var1+var2+var3,data=test) 

しかし、VAR1-VAR3は、実際の代わりにY/NのレベルVAR1、varとVAR3と同じカテゴリ変数の下に属しています。さらに、これらは互いに排他的ではありません。だから、それは相互に排他的ではなく、これらの異なるレベルの変数VAR4を作成し、

summary.formula(age~sex+var4,data=test) 

を入力等を出力持って何とか可能である:すべてのヘルプははるかに高く評価されるだろう

+-------+-+---+----+ 
|  | |N |age | 
+-------+-+---+----+ 
|sex |F| 44|48.0| 
|  |M| 56|50.8| 
+-------+-+---+----+ 
|var4 |var1| xx|yy| 
|  |var2| xx|yy| 
     |var3| xx|yy| 
+-------+-+---+----+ 
|Overall| |100|49.6| 
+-------+-+---+----+ 

を..

+1

私はあなたが望むものを理解していません。 Var4が何であるか、またはVar4のサブセットがVar4のためにどのように動作するはずであるかはわかりません。 – Dason

答えて

1

どのようにbout paste0? (又はペースト(...、9月=「」)あなたはR2.15でいないのであれば)

> test$var4 <- paste0(test$var1, test$var2, test$var3) 
> summary.formula(age~sex+var4, data=test) 
age N=100 

+-------+---+---+--------+ 
|  | | N|  age| 
+-------+---+---+--------+ 
| sex| F| 50|50.25440| 
|  | M| 50|51.32134| 
+-------+---+---+--------+ 
| var4|NNN| 13|46.64417| 
|  |NNY| 17|51.34456| 
|  |NYN| 15|52.92185| 
|  |NYY| 17|47.35685| 
|  |YNN| 9|50.91647| 
|  |YNY| 7|48.04489| 
|  |YYN| 10|53.23713| 
|  |YYY| 12|56.14394| 
+-------+---+---+--------+ 
|Overall| |100|50.78787| 
+-------+---+---+--------+ 
> 
+0

Var4は、レベルvar1、var2、およびvar3のみを持つ必要があります。これらのレベルのすべての異なる順列ではありません。 – Misha

+0

新しいvar4では、var1とvar2が 'Y'ならば、var4に2つのエントリが必要です(別名2行)。 – Justin

+0

は、我々が自動車を扱っていると言うことができます。データセットは、(var1)nissan、(var2)Lexusなどで入力されました。各ファミリは1つの車よりもmoeを所有でき、集約されたcar変数は家族の所有するすべての車を含む必要があります。どうにかして、数式で自動車を入力するだけで、それぞれのyes/no変数に対してこれを行う必要なく、レクサスと日産の異なる行を持つテーブルが得られる可能性が非常に高くなります。 – Misha

0

私はこの問題は、あなたが2つの異なるデータセットの統計情報を組み合わせるためにしようとしていることであると思う:

人によってインデックスさ
  1. データ:車でインデックス化

    summary.formula(age~sex, test) 
    
    # age N=100 
    # 
    # +-------+-+---+--------+ 
    # |  | |N |age  | 
    # +-------+-+---+--------+ 
    # |sex |F| 35|49.99930| 
    # |  |M| 65|48.96266| 
    # +-------+-+---+--------+ 
    # |Overall| |100|49.32548| 
    # +-------+-+---+--------+ 
    
  2. データ

ここでは車1台につき1つの列が必要です。ここでは、データを作成するための一つの方法ですが、私は非常に良くな方法が存在しなければならないと確信しています:

var1 <- subset(test, var1 == "Y", c("age", "sex")) 
    var2 <- subset(test, var2 == "Y", c("age", "sex")) 
    var3 <- subset(test, var3 == "Y", c("age", "sex")) 
    var1$var <- "var1" 
    var2$var <- "var2" 
    var3$var <- "var3" 
    vars <- rbind(var1, var2, var3) 

その後、要約統計:2のOverallセクション、あなたが見ることができるよう

summary.formula(age~var, data=vars) 
    # age N=147 
    # 
    # +-------+----+---+--------+ 
    # |  | |N |age  | 
    # +-------+----+---+--------+ 
    # |var |var1| 47|48.91983| 
    # |  |var2| 43|46.31811| 
    # |  |var3| 57|49.35292| 
    # +-------+----+---+--------+ 
    # |Overall| |147|48.32672| 
    # +-------+----+---+--------+ 

サマリーは2つの異なるデータセットに由来するため、一致しません。 (そしてあなたが求めている方法でそれらを組み合わせることはできません)

関連する問題