【发布时间】:2018-03-22 23:15:09
【问题描述】:
我的示例数据集:
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 的每个组合都填充为 0 的 VALUE1 和 VALUE2。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循环生成一个动态字符串,但我觉得有一种更简单的方法可以用几行代码来完成它。我想我想得太复杂了。有任何想法吗?提前谢谢你。
【问题讨论】:
-
您的结果输出要么缺少类别值,要么区域与您的输出数据不同 - 对于组合,
expand.grid()可能会有所帮助。 -
在基础 R 中,如前所述,在当前示例中,d 执行
dfNew <- merge(df, expand.grid(df[1:2]), all=TRUE); df[is.na(df)] <- 0。
标签: r