2017-04-13 9 views
0

グループ内の各変数の最大値を計算したかったので、直線を使用する代わりに計算を簡単に行う方法があると思いますsummarisegroup_bydplyrに使用してすべての方法をリストしていますか?以下のサンプルデータ:人の略1テストのさまざまな種類のtest20スタンド、通じグループ計算内の変数のリストを参照

Name Year test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 test20 
John 2008 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 
John 2008 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 
John 2009 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 
John 2010 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 
John 2010 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 
John 2010 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 
John 2011 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 
John 2011 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
John 2012 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 
John 2012 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 
John 2012 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 
John 2013 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 
Mary 2009 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Mary 2010 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
Mary 2010 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 
Mary 2011 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 
Mary 2011 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 
Mary 2011 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 
Mary 2011 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 
Mary 2012 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 
Mary 2012 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 
Mary 2013 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
Mary 2013 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
Jack 2010 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 
Jack 2010 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 
Jack 2011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 
Jack 2011 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 
Jack 2011 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 
Jack 2011 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 
Jack 2012 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 
Jack 2012 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 
Jack 2013 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
Jack 2013 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 
Jack 2014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Jack 2015 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 
Jack 2015 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 
Jack 2015 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 

test1彼/彼女はないの略0、この試験を取ります。人はできるだけ多くの時間テストを受けることができます。私はその人がその年に各試験を受験したかどうかを実証するレベル集計をperson-yearにしたいと思っています。上で説明したように、maxperson-yearレベルの中で20回すべてのテストで計算する簡単な方法があれば、私はddplyを使用することを考えていますが、より良いアプローチがあるかどうかについてはまだ苦労しています。

ありがとうございます!
アン

答えて

2

tidyrの添加がここに役立ちます:

# highlighting your data above 
dat <- read.table("clipboard", header = TRUE, stringsAsFactors = FALSE) 

library(dplyr) 
library(tidyr) 

dat %>% 
    gather(test, tookit, -Name, -Year) %>% 
    group_by(Name, Year, test) %>% 
    summarize(times = sum(tookit)) %>% 
    ungroup() 
# # A tibble: 340 × 4 
#  Name Year test times 
# <chr> <int> <chr> <int> 
# 1 Jack 2010 test1  0 
# 2 Jack 2010 test10  1 
# 3 Jack 2010 test11  1 
# 4 Jack 2010 test12  0 
# 5 Jack 2010 test13  0 
# 6 Jack 2010 test14  1 
# 7 Jack 2010 test15  2 
# 8 Jack 2010 test16  0 
# 9 Jack 2010 test17  0 
# 10 Jack 2010 test18  0 
# # ... with 330 more rows 

をこれは、彼らが毎年各テストを撮影した回数を示します。 (tidyrなし)

別の方法

dat %>% 
    group_by(Name, Year) %>% 
    summarize_at(starts_with("test", vars=colnames(.)), sum) %>% 
    ungroup() 
# A tibble: 17 × 22 
#  Name Year test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 
# <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> 
# 1 Jack 2010  0  0  0  0  1  0  0  0  0  1 
# 2 Jack 2011  0  1  0  0  1  1  0  0  1  1 
# 3 Jack 2012  0  0  1  1  0  0  0  0  1  1 
# 4 Jack 2013  1  0  0  0  0  1  0  0  0  0 
# 5 Jack 2014  0  0  0  0  0  0  0  0  0  0 
# 6 Jack 2015  0  0  0  1  0  1  1  1  1  0 
# 7 John 2008  2  0  1  0  0  1  0  0  0  1 
# 8 John 2009  0  1  1  0  0  0  1  0  1  0 
# 9 John 2010  0  0  0  1  0  1  1  1  1  0 
# 10 John 2011  0  0  0  1  2  0  1  1  0  1 
# 11 John 2012  0  0  1  1  0  0  2  1  1  0 
# 12 John 2013  0  0  1  0  0  0  0  0  0  0 
# 13 Mary 2009  0  0  1  0  1  0  0  0  0  0 
# 14 Mary 2010  0  0  0  0  1  0  1  0  0  1 
# 15 Mary 2011  0  1  1  1  0  0  1  1  1  1 
# 16 Mary 2012  0  0  0  0  1  1  0  1  0  1 
# 17 Mary 2013  0  0  0  1  0  0  1  1  0  0 
# # ... with 10 more variables: test11 <int>, test12 <int>, test13 <int>, 
# # test14 <int>, test15 <int>, test16 <int>, test17 <int>, test18 <int>, 
# # test19 <int>, test20 <int> 
+0

こんにちはエヴァン、迅速なご協力に感謝いたします。私は各変数の最大値を取得しただけなので、パネルを維持したかったのですが、このメソッドを使用することは可能ですか?最高、 – Anne

+0

確かに、 '%>%spread(test、times)'を追加してください、そうですか? – r2evans

関連する問題