为2000-2008之间的所有缺失月份添加每个名称

时间:2018-05-12 13:06:31

标签: dataframe

示例:

import axios from 'axios';

export const FETCH_TESTS = 'FETCH_TESTS';
const ROOT_URL = 'http://some-working-api-entry.com';

export function fetchTests(){
  const request = axios.get(`${ROOT_URL}/tests/?format=json`);
  return {
    type: FETCH_TESTS,
    payload: request
  }
}

我有另一个数据集。我可以肯定的是,我对其他数据集的观察结果是列名和列日期,范围从2000到2008。

因此,我正在寻找一个修改后的代码,它不仅可以计算每个月的中位数,还可以为2000-2008之间的所有缺失月份添加每个名称,并为它们返回NA值。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

您可以使用tidyr::complete确保在数据中包含2000 - 2008的每个月。

解决方案可以是:

library(tidyverse)
library(lubridate)
df %>% mutate(Date = ymd(Date), C2 = C1*2) %>% 
  group_by(Name, YearMon = format(Date, "%Y-%m")) %>%
  summarise_at(vars(starts_with("C")), median, na.rm=TRUE) %>%
  complete(YearMon = 
         format(seq(ymd("2001-01-01"), ymd("2008-12-31"), by="1 month"),"%Y-%m")) %>% 
  as.data.frame()

#     Name YearMon  C1  C2
# 1      A 2001-01  NA  NA
# 2      A 2001-02  NA  NA
# 3      A 2001-03  NA  NA
# 4      A 2001-04  NA  NA
# 5      A 2001-05  NA  NA
# .............
# .............
# 180    B 2007-12  NA  NA
# 181    B 2008-01   4   8
# 182    B 2008-02  11  22
# 183    B 2008-03  13  26
# ............
# ..............