私はグループ化されたデータセットを扱っており、4つの新しい列として4つの集計統計を追加したいと思っています:count、mean、ci lower、ci upper。異なる数の戻り値を返す異なる関数を持つグループ化されたデータを要約する方法はありますか?
私は、次のような上位のCI、低級C、平均要約:
library(Hmisc)
library(dplyr)
# summarize count, mean, confidence intervals and make four new columns;
mtcars %>% group_by(vs, am) %>%
do(
as.data.frame(as.list(smean.cl.normal(.$mpg)))
)
# vs am Mean Lower Upper
# <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 0 0 15.05000 13.28723 16.81277
# 2 0 1 19.75000 15.54295 23.95705
# 3 1 0 20.74286 18.45750 23.02822
# 4 1 1 28.37143 23.97129 32.77157
私は、カウントを追加するときしかし、新しい列がリストの2列になっ:
df <- mtcars %>% group_by(vs, am) %>%
do(
n = length(.$mpg),
stats = smean.cl.normal(.$mpg)
)
# # A tibble: 4 × 4
# vs am n stats
# * <dbl> <dbl> <list> <list>
# 1 0 0 <int [1]> <dbl [3]>
# 2 0 1 <int [1]> <dbl [3]>
# 3 1 0 <int [1]> <dbl [3]>
# 4 1 1 <int [1]> <dbl [3]>
私の所望の出力がされます:
# vs am n Mean Lower Upper
# <dbl> <dbl> <int> <dbl> <dbl> <dbl>
# 1 0 0 12 15.05000 13.28723 16.81277
# 2 0 1 6 19.75000 15.54295 23.95705
# 3 1 0 7 20.74286 18.45750 23.02822
# 4 1 1 7 28.37143 23.97129 32.77157
これをどのようにすれば便利ですか?
ありがとうございます。
私も試してみました:
mtcars %>% group_by(vs, am) %>%
do(
as.data.frame(as.list(c(length(.$mpg), smean.cl.normal(.$mpg))))
)
# Source: local data frame [4 x 8]
# Groups: vs, am [4]
#
# vs am X12 Mean Lower Upper X6 X7
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 0 0 12 15.05000 13.28723 16.81277 NA NA
# 2 0 1 NA 19.75000 15.54295 23.95705 6 NA
# 3 1 0 NA 20.74286 18.45750 23.02822 NA 7
# 4 1 1 NA 28.37143 23.97129 32.77157 NA 7
これは奇妙な結果が得られます。
なぜ、2度目の試みでは、それを 'data.frame'にまとめなかったのですか?あなたはそれがなくて突然仕事をするべきだと主張したのはなぜですか?私は単純に 'mtcars%>%group_by(vs、am)%>%do(as.data.frame(as.list(c = n = length(。$ mpg) 、smean.cl.normal(。$ mpg))))) '、いいえ? –
@DavidArenburg私は同様の方法で試しました: 'mtcars%>%group_by(vs、am)%>% do( as.data.frame(as.list(c(length(。$ mpg)、smean.cl .normal(。$ mpg))))) ) '。これは、 "NA"で奇妙な列を与えます。だから私はこれがうまくいかないと思う。なぜ私は 'n ='なしで奇妙な結果を得るのですか? – mt1022
dplyrはスマートにしようとしているので、 'paste0(" X "、length(。$ mpg))'というようにして新しい名前を割り当てます。フレームは新しい名前で毎回新しい列を追加します –