【问题标题】:R: find missing data and add it with a zero [duplicate]R:查找丢失的数据并将其添加为零[重复]
【发布时间】:2018-04-27 09:35:18
【问题描述】:

我有以下一组数据:

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

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

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

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

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

你能告诉我如何在 R 中做到这一点吗?

【问题讨论】:

标签: r sorting


【解决方案1】:

你的解释对我来说有点神秘,但我猜你对所有组都有计数,但你也需要对所有排列都有它们,即使没有观察到(因此用 0 填充freq)。你可以使用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))

【讨论】:

  • 嗨蒂诺,非常感谢。我得开始学习一点 od tidyr。
  • 只是另一个问题:考虑到使用您创建的 df 的相同问题,是否可以对 Var1=A 和 Var2=B 进行所有排列但分别进行排列?
  • 你可以像subset(df, Var1=="A" &amp; Var2=="B")一样使用subset()
  • 当然,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2021-12-07
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
相关资源
最近更新 更多