填充数据框中缺少的组合

时间:2017-10-11 10:11:02

标签: r

我的示例数据集:

df <- data.frame(
 REGION = c("REGION A", "REGION A", "REGION B"), 
 CATEGORY = c("A", "B", "B"), 
 VALUE1 = c(2,3,4),
 VALUE2 = c(1,2,3)
)

结果:

  REGION    CATEGORY VALUE1 VALUE2
1 REGION A   A             2     1
2 REGION A   B             3     2
3 REGION B   B             4     3

现在我想要在数据集中未考虑的REGION和CATEGORY的每个组合都填充VALUE1和VALUE2为0.此df的结果应为:

      REGION   CATEGORY VALUE1 VALUE2
    1 REGION A  A          2      1
    2 REGION A  B          3      2
    3 REGION B  A          4      3
    4 REGION B  B          0      0

我已经为它编写了一个很大的函数,它生成一个带有for循环的动态字符串,但我觉得有一个更简单的方法只用几行代码就可以了。我想我觉得太复杂了。有任何想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:4)

使用来自tidyr的complete

library(tidyr)
as.data.frame(complete(df,REGION,CATEGORY,fill=list(VALUE1=0,VALUE2=0)))

输出:

    REGION CATEGORY VALUE1 VALUE2
1 REGION A        A      2      1
2 REGION A        B      3      2
3 REGION B        A      0      0
4 REGION B        B      4      3

如果有很多变数,您也可以as.data.frame(complete(df,REGION,CATEGORY))然后替换NA

希望这有帮助!