R 在数据帧中填充缺少的组合

R 在数据帧中填充缺少的组合,r,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) ) 现在,我希望数据集中未考虑的区域和类别的每个组合都用值1和值2填充0。此df的结果应为: REGION CATEGORY VALUE1 VALUE2 1 REGION A

我的示例数据集:

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)
)
现在,我希望数据集中未考虑的区域和类别的每个组合都用值1和值2填充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循环的动态字符串,但我觉得有一种更简单的方法,只需几行代码就可以完成。我想我的想法太复杂了。有什么想法吗?提前谢谢。

使用tidyr的
完成

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
如果有很多变量,您也可以将
作为.data.frame(complete(df,REGION,CATEGORY))
执行,然后替换
NA


希望这有帮助

您的结果输出要么缺少类别值,要么区域与您的输出数据不同-对于这些组合,可能
expand.grid()
会有所帮助。在base R中,如前所述,在当前示例中,d do
dfNew
    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