我之前已经问过这个问题,但我不太明白。
我有一个如下所示的数据集:
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 :(得分:7)
以下作品:
df %>% gather(Year, Value, -Precinct, -Crime)
答案 1 :(得分:0)
您需要指定应收集的所有列(或删除应收集_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)