2017-05-30 188 views
0

我開始使用tidyr和dplyr。我有以下的數據幀:重新格式化數據

      email Assignment Stage Grade 
1      [email protected] course final 86.28 
2      [email protected] course first 68.87 
3      [email protected] course resub 38.06 
4      [email protected] course final 77.41 
... 

我想這樣重組此,基於階段(第一,RESUB或最終)創建從一個等級列對應於第一階段的值三列的值

      email Assignment first resub final 
1      [email protected] course 100.0 100.0 100.0 
2      [email protected] course 100.0 100.0 100.0 
3      [email protected] course 100.0 100.0 100.0 
4      [email protected] course 100.0 100.0 100.0 

(數據顯然不是因爲剪切/粘貼的匹配。)

我很困惑,我需要一個單獨的()函數,但如何?謝謝!

回答

1

tidyr的spread()函數應該爲您提供所需的結果。

email <- c("[email protected]","[email protected]","[email protected]","[email protected]") 
Assignment <- rep("course",4) 
Stage <- c("final","first","resub","final") 
Grade <- c(86.28,68.87,38.06,77.41) 

df <- data.frame(email,Assignment,Stage,Grade,stringsAsFactors = FALSE) 

df <- df %>% 
     spread(Stage, Grade)