首页 > 解决方案 > R:查找丢失的数据并将其添加为零

问题描述

我有以下一组数据:

在此处输入图像描述

黄色的行是一个很好的例子,因为对于 Vaer=B,Var2=F 和 Var2=G 都存在一个频率值。

但是,红色行是不良情况的示例,因为 Var2=F 的第 13 行在 2018 年 2 月 7 日具有频率值,但我在同一日期没有 Var2=G 的值。

另一方面,红色的第 27 行,我在日期 04:02:2018 有 Var2=G 的频率值,但在同一日期我没有 Var2=F 的频率值。

我需要的是: 对于所有类型的 Var1 (A, B, ..) 和对于每个 Var2 (F, G) 如果 freq 存在于 Var2=F 但不存在于 Var2=G 中,则为 Var2=G freq=0 创建同一日期。

对于不存在 Var2=F 的 Var2=G 也必须如此。

你能给我一些想法如何在 R 中做到这一点吗?

标签: rsorting

解决方案


你的解释对我来说有点神秘,但我想你对所有组都有计数,但你也需要对所有排列都有它们,即使没有观察到(因此freq用 0 填充)。您可以使用tidyr::complete

df <- data.frame(Var1 = c("A", "A", "B", "B", "B"),
                 Var2 = c("F", "G", "F", "G", "F"),
                 freq = c(2L, 3L, 1L, 5L, 3L),
                 date = as.Date(c("2018-04-27", "2018-04-28", "2018-04-27", "2018-04-28", "2018-04-29")))
tidyr::complete(data = df, Var1, Var2, date, fill = list(freq = 0L))

推荐阅读