【问题标题】:Adding observations in a table and attribute a given observation (join)在表中添加观察并赋予给定观察的属性(连接)
【发布时间】:2020-06-28 20:27:33
【问题描述】:

下午好,

我正在分析给定月份的观察分布,例如:

日期观察

2010-01 10

2010-03 15

2010-05 16

问题:如何在表中插入缺失的日期(2010-02 和 2010-05)(使用包含所有月度日期的其他表)并将 0 属性作为观察值。

提前致谢。

【问题讨论】:

    标签: r date join


    【解决方案1】:

    我们将'Date'转换为Date类,然后使用complete通过获取min/maxfirstlast'Date'by'1个月'的序列来扩展数据集,而filling '观察'与 0

    library(tidyr)
    library(dplyr)
    df1 %>%
         mutate(Date = as.Date(Date)) %>%
         complete(Date = seq(first(Date), last(Date), by = '1 month'), 
                fill = list(Observations = 0))
    

    如果有另一个具有完整“日期”的数据集,那么显而易见的选项是 left_join,然后将“观察”中的 NA 元素替换为 0,因为默认情况下,如果我们没有匹配项,它将填写NA

    left_join(df2, df1, by = 'Date') %>%
         mutate(Observations = replace_na(Observations, 0))
    

    注意:df2 是具有完整“日期”的数据集

    如果“df2”还有其他列,我们不需要select那些列

    left_join(df2 %>% 
                   select(Date), df1) %>%
         mutate(Observations = replace_na(Observations, 0))
    

    base R,我们可以使用merge

    transform(merge(df2, df1, by = 'Date', all.x = TRUE),
          Observations = replace(Observations, is.na(Observations), 0))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-13
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2021-11-22
      • 2017-09-07
      • 1970-01-01
      相关资源
      最近更新 更多