R 自动将数据框中缺失的行添加到现有数据框中

Add the missing rows in the dataframe to an existing dataframe automatically by R

我正在尝试实现一个功能,如果我自己编码可能会太复杂,所以我在这里寻求帮助,看看专业编码人员是否有更好的解决方案:)

您可以在下面找到一个流量来源-目的地示例 table(A、B 和 C 都是位置):

data <- data.frame(origin = c("A", "A", "B", "B", "B", "C"), 
               destination = c("B", "C", "A", "B", "C", "A"),
               number = c(7,2,3,5,6,4))

table 看起来像这样:

  origin destination number
1      A           B      7
2      A           C      2
3      B           A      3
4      B           B      5
5      B           C      6
6      C           A      4

理想情况下,每个独立的origin应该有3行数据,例如,从A到A,A到B和A到C。但是正如你在[=29=中看到的那样], 对于原点 A 和 C,缺少一些数据(原点 A 为 A 到 A,原点 C 为 C 到 B 和 C)。

我想要实现的是让 R 自动添加缺失的行并为列分配一个数字“1”number

也就是说最后的 table 应该如下所示:

      origin destination number
1      A           A      1
2      A           B      7
3      A           C      2
4      B           A      3
5      B           B      5
6      B           C      6
7      C           A      4
8      C           B      1
9      C           C      1

我想知道是否有任何现有的 R 公式可以实现此功能?如果没有,您有什么建议可以使数据处理编码简短高效?非常感谢您的提前帮助!

tidyr 中的 complete 函数执行此操作。

library(tidyr)

complete(data, origin, destination, fill = list(number = 1))
# # A tibble: 9 x 3
# origin destination number
# <chr>  <chr>        <dbl>
# 1 A      A                1
# 2 A      B                7
# 3 A      C                2
# 4 B      A                3
# 5 B      B                5
# 6 B      C                6
# 7 C      A                4
# 8 C      B                1
# 9 C      C                1