2017-12-06 1 views
0

Rのdplyrを使用してグループ化された手段とsdsを印刷する方法はありますか(プラセボと薬物群についてベースラインの人口統計が報告されている多くの無作為化試験試験レポートでは、 。現時点では私が持っている:手段でSDSを置くdplyを使用した平均とsdsのテーブル

group_summary<- df %>% 
    group_by(group) %>% 
    summarise_at(vars(age, iq), c(mean, sd), na.rm=TRUE) 

t(group_summary) 

      [,1]  [,2]  [,3]   
group       "drug1"  "drug2"  "placebo" 
age (x, ...) ...    "22.7(3.8)" "25.1(3.9)" "23.5(4.6)" 
weight (x, ...) ...   "56.0(16.0)" NA   "64.7(15.4)" 

グレイトフル:

       [,1]  [,2]  [,3]   
group       "drug1"  "drug2"  "placebo" 
age (x, ...) ...    "22.72436" "25.06164" "23.54394" 
weight (x, ...) ...   "57.97143" NA   "64.66667" 
age (x, na.rm = FALSE) ... "3.793276" "3.930634" "4.623405" 
weight (x, na.rm = FALSE) ... "16.03617" NA   "15.44099" 

をするとき、理想的に私が希望するものの線に沿ってより多くのものです任意のアドバイスについては、可能であれば、整頓方法は理想的ですが、

答えて

0

あなたは@ピートの答えに基づいて構築する必要があります。あなたは、いくつかの変数のためにこれを行うにしたい場合はa、b、c、dを言う、これを行う。..

library(tidyverse) 

df%>% 
    group_by(grouping.variable)%>% 
    summarise_at(vars(a,b,c,d), funs(paste0(format(round(mean(., na.rm = T), y), 
               nsmall = y),"(",format(round(sd(., na.rm = T), y), nsmall = y) ,")")))%>% 
gather(Variable, Value, -grouping.variable)%>% 
spread(grouping.variable, Value) 

私はかなりどのようにt()作品が好きではありません。私はtidyrパッケージのgatherspreadを使いたいです。

私はこれがあなたの望むものを与えることを望みます。

0

私はこれを使用します:

df1 <- df %>% 
    group_by(grouping.variable) %>% 
    summarise(#x = variable, y = number of decimal places 
    mean.sd.x = paste0(format(round(mean(x), y), 
     nsmall = y),"(",format(round(sd(x), y), nsmall = y) ,")")) 
+0

これは単一の変数に対してうまく機能します。これを実行する効率的な方法はありますか? 20変数(年齢、高さ、iqなど) – RobMcC

+0

私は手動で最後の行を手動で繰り返します。 mead.sd.age = ....、mean.sd.weight = .....もっと効率的なやり方で私はうまくいくかもしれません。 – Pete

関連する問題