[英]Add missing rows with NA in long (time series) data
假设我的data.frame
格式不完整:
mydata <- data.frame(year = rep(c(2000,2001,2002,2004),
2),
team = factor(c("A","A","A","A",
"B","B","B","B")),
score = c(8,1,3,1,2,3,7,2))
正如你所看到的,对于观察year
2003缺失:
mydata
year team score
1 2000 A 8
2 2001 A 1
3 2002 A 3
4 2004 A 1
5 2000 B 2
6 2001 B 3
7 2002 B 7
8 2004 B 2
是否有一种优雅的方法来添加缺失的行(在正确的位置) ?
我希望team
变量充满所有可能的水平并用NA
score
...
如果有一个(- dplyr
我希望使用干净的dplyr
解决方案。
最后, mydata
应该如下所示:
year team score
1 2000 A 8
2 2001 A 1
3 2002 A 3
4 2003 A NA
5 2004 A 1
6 2000 B 2
7 2001 B 3
8 2002 B 7
9 2003 B NA
10 2004 B 2
这个expand.grid
解决方案几乎解决了这个问题,但是我不知道如何将其以长格式应用于data.frame
。
您可以从tidyr
使用complete()
:
library(tidyr)
library(dplyr)
mydata %>% group_by(team) %>%
complete(year = full_seq(year, 1))
#1 A 2000 8
#2 A 2001 1
#3 A 2002 3
#4 A 2003 NA
#5 A 2004 1
#6 B 2000 2
#7 B 2001 3
#8 B 2002 7
#9 B 2003 NA
#10 B 2004 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.