我经常使用如下时序数据集:
CNGBOND. FRGBOND.
2006-02-15 NA 3.76
2006-03-31 4.26 NA
2006-05-15 NA 4.25
2006-06-30 4.69 NA
2006-08-15 NA 4.17
2006-09-29 4.08 NA
2006-11-15 NA 4.06
2006-12-29 4.11 NA
我想将行分组为四分之一,并删除NA以获得:
CNGBOND. FRGBOND.
2006 Q1 4.26 3.76
2006 Q2 4.69 4.25
2006 Q3 4.08 4.17
2006 Q4 4.11 4.06
有没有简单/优雅的方法来实现这一目标,最好使用dplyr
管道?
我考虑过转换为季度(使用zoo:as.yearqtr
),然后按季度日期进行分组(使用dplyr::group_by
),但后来陷入了如何为每个组中的每一列过滤掉NA的问题。
一种解决方案涉及zoo
并且dplyr
可能是:
df %>%
rownames_to_column(var = "Date") %>%
group_by(Date = as.yearqtr(Date, format = "%Y-%m-%d")) %>%
summarise_all(~ na.omit(.))
Date CNGBOND. FRGBOND.
<yearqtr> <dbl> <dbl>
1 2006 Q1 4.26 3.76
2 2006 Q2 4.69 4.25
3 2006 Q3 4.08 4.17
4 2006 Q4 4.11 4.06
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句