我有一个长格式数据框,有相同日期和人的多个条目.
jj <- data.frame(month=rep(1:3,4),
student=rep(c("Amy", "Bob"), each=6),
A=c(9, 7, 6, 8, 6, 9, 3, 2, 1, 5, 6, 5),
B=c(6, 7, 8, 5, 6, 7, 5, 4, 6, 3, 1, 5))
Run Code Online (Sandbox Code Playgroud)
我想将它转换为宽泛的形式,并使它像这样:
month Amy.A Bob.A Amy.B Bob.B
1
2
3
1
2
3
1
2
3
1
2
3
Run Code Online (Sandbox Code Playgroud)
我的问题与此非常相似.我在答案中使用了给定的代码:
kk <- jj %>%
gather(variable, value, -(month:student)) %>%
unite(temp, student, variable) %>%
spread(temp, value)
Run Code Online (Sandbox Code Playgroud)
但它给出了以下错误:
错误:行(1,4),(2,5),(3,6),(13,16),(14,17),(15,18),(7,10),(8)的重复标识符,11),(9,12),(19,22),(20,23),(21,24)
提前致谢.注意:我不想删除多个条目.
我想使用%>% - chaining在tidyverse中执行此操作.
df <-
structure(list(id = c(2L, 2L, 4L, 5L, 5L, 5L, 5L), start_end = structure(c(2L,
1L, 2L, 2L, 1L, 2L, 1L), .Label = c("end", "start"), class = "factor"),
date = structure(c(6L, 7L, 3L, 8L, 9L, 10L, 11L), .Label = c("1979-01-03",
"1979-06-21", "1979-07-18", "1989-09-12", "1991-01-04", "1994-05-01",
"1996-11-04", "2005-02-01", "2009-09-17", "2010-10-01", "2012-10-06"
), class = "factor")), .Names = c("id", "start_end", "date"
), row.names = c(3L, 4L, 7L, 8L, 9L, 10L, 11L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
data.table::dcast( df, formula …Run Code Online (Sandbox Code Playgroud)