4

私はHmiscパッケージを使用して、以下のような出力を生成しようとしています。

                                            Group
Step      Method                   G1           G2         G3 .......   

s1          m1          N          45            26         17
                       Min          2             2         3
                       Max          7             6         4
                       Mean         3.5          4.5        2.5
                       Sdev         2.6          3.6         1

            m2          N          
                       Min          
                       Max          
                       Mean        
                       Sdev  

s2          m1          N          
                       Min          
                       Max        
                       Mean         
                       Sdev        

            m2          N          
                       Min          
                       Max          
                       Mean        
                       Sdev    

私の生データは以下のようになります。

       Site    Step  Method   Group   Outcome
        a1      s1     m1      g1      3.6
        a1      s1     m4      g1      2.3
        a2      s2     m1      g2      14
        a3      s1     m3      g1      7
        a3      s3     m6      g1      1
        a4      s1     m1      g3      6.2

各グループのすべてのサイト結果のn、min、mean、sdev、およびmaxを、ステップと方法で計算しようとしています。私はサイトを一意の識別子として使用しています。すべてのサイトにすべてのステップがあるわけではなく、すべてのステップにすべてのメソッドがあるわけではないため、値が欠落しています。私はHmiscパッケージで遊んでいて、を使用してn、mean、min、およびmaxを計算できましたがfun=summary、メソッドごとに個別にしか計算できず、あまりきれいではないマトリックスで表示されます。 。私はパッケージがラテックスを使用していることを知っています(私はこれを完全に初心者です)、そして私はのオプションを使用しましたsummary(....,file="data.tex").dviファイルを保存することだと思います。右クリックしてpdfに変換するように指示しますが、pdfはすべて壊れており、間違った場所にデータが表示されています。何が間違っているのか本当にわからないので、フィードバックや入力をいただければ幸いです。乾杯。

4

2 に答える 2

4

パッケージ内のtabular関数は、tablesSASのようなテーブルを作成するためのものでした。次のようなことを試すことができdatます(サンプルデータを参照してください)。

library(tables)
(tab1 <- tabular(Step*Method*Heading()*Outcome*((n = 1) + min + max + mean + sd) ~ Group, 
        data = dat))

                  Group          
 Step Method      g1    g2   g3  
 s1   m1     n     1.0     0  1.0
             min   3.6   Inf  6.2
             max   3.6  -Inf  6.2
             mean  3.6   NaN  6.2
             sd     NA    NA   NA
      m3     n     1.0     0  0.0
             min   7.0   Inf  Inf
             max   7.0  -Inf -Inf
             mean  7.0   NaN  NaN
             sd     NA    NA   NA
             ...   ...   ...  ...

データをさらに処理するために、たとえばラテックスを使用して、latex(tab1)適切にフォーマットされたラテックス表を作成します。

注:次のように、テーブルのフォーマットを簡単に改善できます。

tabular(Step*RowFactor(Method, levelnames = c("M1", "M2", "M3", "M4"), spacing = 1)*
                Heading()*Outcome*
                (Format()*(N= 1) + (Min = min) + (Max = max) + (Mean = mean) + 
                    (Sdev = sd)) ~ 
                Factor(Group, levelnames = c("G1", "G2", "G3")), 
        data = dat)

また、これをすべてのサイトに適用するのは簡単です。tabular(Site*Step*...)

于 2013-03-03T22:10:20.443 に答える
3

私はあなたがフォーマットを気にしないと仮定しています(それは間違っているかもしれません)、あなたはただaggregate関数を使うことができます:)

# run any function, grouped by whatever variables you want..
aggregate( Outcome ~ Step + Method + Group , data = x , summary )

# the summary function doesn't include standard deviations,
# so run that separately
aggregate( Outcome ~ Step + Method + Group , data = x , sd )

データが次のようになっていると仮定します。

# read in your data
x <- read.table( h = T , text = "Site    Step  Method   Group   Outcome
        a1      s1     m1      g1      3.6
        a1      s1     m4      g1      2.3
        a2      s2     m1      g2      14
        a3      s1     m3      g1      7
        a3      s3     m6      g1      1
        a4      s1     m1      g3      6.2")

グループごとにタスクを実行しているだけの場合は、検索語を見て?aggregate?tapply将来的にはgroupwise検索語に含めてください。

すべてを1行で実行したい場合は、の出力を..の出力とsummary一緒にまとめるだけの簡単なカスタム関数を作成できます。sd

# alternatively, you can tack a standard deviation onto the summary function if you like..
swsd <- function( x ) c( summary( x ) , sd( x ) )

# ..and then run that through `aggregate` instead :)
aggregate( Outcome ~ Step + Method + Group , data = x , swsd )
于 2013-03-03T21:35:50.883 に答える