2017-01-27 67 views
1

我知道這個問題之前已經被問過了,但我不太明白。用多鍵收集

我有一個數據集,看起來像這樣:

Precinct Crime  2000 2001 2002 2003 
1   Murder  3  1  2  2 
1   Rape   12  5  10 11 
1   Burglary  252 188 297 403 
2   Murder  4  2  1  0 

與去年下的每個犯罪的值。

我試圖將其重新組合成簡單的集,看起來就像這樣:

Precinct Crime Year Value 
    1  Murder 2000  3 
    1  Rape  2000  12 

我如何去這樣做呢?我知道我應該使用tidyr的gather,但推算多個鍵的解決方案對我來說並不合適。

+0

只要使用'聚集(DF1,年,值,3:ncol(df1))' – akrun

+0

>現有問題的確切副本 如果措辭不同,這並不完全相同。實際上是相反的。他不是從廣泛的格式轉換到廣泛的格式。哪些可以完成:收集。 – mtelesha

回答

2

以下工作:

df %>% gather(Year, Value, -Precinct, -Crime) 
+1

奇怪:爲什麼這個完美的工作,最佳實踐答案downvoted? –

-1

您需要指定要收集所有列(或取出應_not_be收集的所有列):

library(tidyverse) 

dat <- tibble::tibble(
    Precinct = c(1, 1, 1, 2), 
    Crime = c("Murder", "Rape", "Burglary", "Murder"), 
    `2000` = c(3, 12, 252, 4), 
    `2001` = c(1, 5, 188, 2), 
    `2002` = c(2, 10, 297, 1), 
    `2003` = c(2, 11, 403, 0) 
) 

tidyr::gather(dat, Year, Value, 3:6) 
tidyr::gather(dat, Year, Value, -Precinct, -Crime) 
+0

該死的,我太慢了! – Daniel

+2

是的。保持正確沒有意義? – Sotos