2017-06-02 22 views
0

而不是走開這裏的可重複的例子,我解釋了爲什麼它做它做。在R中,爲什麼這個調用聚集()做到這一點

data = read.csv(text="Email foo.final bar.final 
[email protected] 100  200 
[email protected] 101  201 
[email protected] 102  202 
[email protected] 103  103", header=T, sep="") 

a = gather(data, key, Grade, -Email) 

是指:除「電子郵件」,把所有的列的值轉換成所謂的「等級」一單新列,添加一個名爲「鑰匙」新列包含列標題下發生,它的值。鑑於我們有4個觀測值,每個觀測值有兩個變量,這應該產生8個觀測值。結果:

 Email  key Grade 
1 [email protected] foo.final 100 
2 [email protected] foo.final 101 
3 [email protected] foo.final 102 
4 [email protected] foo.final 103 
5 [email protected] bar.final 200 
6 [email protected] bar.final 201 
7 [email protected] bar.final 202 
8 [email protected] bar.final 103 

B =收集(數據,密鑰級)

相同的含義,但現在我們包括電子郵件。現在我們有4個觀測值,但有3個變量,所以我們應該得到12個觀測值。結果:

  key  Grade 
1  Email [email protected] 
2  Email [email protected] 
3  Email [email protected] 
4  Email [email protected] 
5 foo.final   100 
6 foo.final   101 
7 foo.final   102 
8 foo.final   103 
9 bar.final   200 
10 bar.final   201 
11 bar.final   202 
12 bar.final   103 

我並不感到驚訝。謝謝。

+1

什麼是你期待?哪一部分對你沒有意義?我不確定你在問什麼。另外,如果在提問時包含一個簡單的[可重現的示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),則會更好。 'str()'不如'dput()'有用。更好地使用內置的數據集或最簡單的示例。 – MrFlick

+0

這是非常期待的權利?你正在收集所有的變量(不是轉義電子郵件),它強制在一列中輸入數字/字符值 – timfaber

+0

所有的電子郵件實際上是相同的嗎?如果不是,那麼你可能想重新考慮你提供的例子,因爲它不代表你的用例。 – Dason

回答

0

你可能需要做更多的東西像這樣

f2 <- f1 %>% 
     gather(key = Assignment, value = Grade, COURSE.final:EXAM.final) %>% 
     select(-email) 
相關問題