この例のデータフレームを検討してください:
d <- read.table(text="
trt rep y
1 1 30
1 1 50
1 1 70
1 2 0
1 2 0
1 2 0
2 1 10
2 1 0
2 1 0
2 2 5
2 2 0
2 2 .
"
, header = TRUE, check.names = F, na.strings = ".")
「y」変数の2つの操作で集計表を取得しようとしています。
最初の新しい列には、すべての担当者の trt による単純平均値が含まれている必要があります。
by_rep1 = d %>%
group_by(trt, rep) %>%
summarise(sev = mean(na.omit(y)))
2 つ目は、すべての担当者の trt による陽性値の割合です。
by_rep2 = d %>%
group_by(trt, rep) %>%
summarise_each(funs(round(mean(.>0, na.rm=TRUE),2)), y)
ワンステップでそれを行う方法がわからないので、私はこれを長くやっています:
inner_join(by_rep1, by_rep2, by = c("trt", "rep"))
# trt rep mean_y y
# (int) (int) (dbl) (dbl)
#1 1 1 50.000000 1.00
#2 1 2 0.000000 0.00
#3 2 1 3.333333 0.33
#4 2 2 2.500000 0.50
両方の機能を結合して、単一のステップでそれを行う方法を誰かが知っていますか?