首页 > 解决方案 > R 填补缺失的行

问题描述

我有一个类似的问题:Fill in missing rows in R

但是,我需要填补的空白不仅是几个月,而且还缺少一个 ID 之间的几年。这是一个例子:

structure(list(ID = c("A", "A", "A", "A", "A", "B", "B", "B", 
"B"), A = c(1L, 1L, 3L, 3L, 3L, 2L, 2L, 2L, 3L), B = c(1L, 2L, 
1L, 2L, 3L, 1L, 2L, 3L, 3L), Var1 = 12:4), class = "data.frame", row.names = c(NA, 
-9L))

  ID A B Var1
1  A 1 1   12
2  A 1 2   11
3  A 3 1   10
4  A 3 2    9
5  A 3 3    8
6  B 2 1    7
7  B 2 2    6
8  B 2 3    5
9  B 3 3    4

这就是我希望它看起来的样子:

   ID A B Var1
1   A 1 1   12
2   A 1 2   11
3   A 1 3    0
4   A 2 1    0
5   A 2 2    0
6   A 2 3    0
7   A 3 1   10
8   A 3 2    9
9   A 3 3    8
10  B 2 1    7
11  B 2 2    6
12  B 2 3    5
13  B 3 1    0
14  B 3 2    0
15  B 3 3    4

有人知道如何解决它吗?我已经玩过上面提到的解决方案。

标签: r

解决方案


您可以使用那里描述的解决方案针对您的问题稍微改变它。

df
full <- with(df, unique(expand.grid(ID = ID, A = A, B = B)))
complete <- merge(df, full, by = c('ID', 'A', 'B'), all.y = TRUE)
complete$Var1[is.na(complete$Var1)] <- 0

推荐阅读