由于我想将我的月度回报数据与季度摘要数据合并,因此我目前正试图找出如何使用R将季度数据转换为每月数据的方法。
我目前有什么。
季度数据集
105 20080331 Y Y N N EQ
每月数据集
105 20080131 -0.087372
105 20080229 -0.01609
105 20080331 -0.022895
我想要实现的目标。
105 20080131 -0.087372 Y Y N N EQ
105 20080229 -0.01609 Y Y N N EQ
105 20080331 -0.022895 Y Y N N EQ
我将不得不运行超过350000个单独的行,这就是我寻求帮助的原因。我假设季度值与前三个月相同。
感谢您快速有效的回复。但是,我在格式化上犯了一个错误。
Y1可以分为三个级别,即“”,“ Y”,“ N”。
Y2可以采用3个级别,即“”,“ Y”,“ N”。
N1可以分为4个级别,即“”,“ B”,“ D”,“ E”。
N2可以分为3个级别,即“”,“ F”,“ N”。
V是可以采用任何水平的收益。
我的数据范围也从2008年1月到2019年12月。我相信这会使问题变得更加复杂。
答案 0 :(得分:1)
创建数据:
quart_df <-
tibble::tribble(
~V1, ~V2, ~V3, ~V4, ~V5, ~V6, ~V7,
105, "20080331", "Y", "Y", "N", "N", "EQ"
)
month_df <-
tibble::tribble(
~V1, ~V2, ~V3,
105, 20080131, -0.087372,
105, 20080229, -0.01609,
105, 20080331, -0.022895
)
使用dplyr::full_join()
加入:
library(dplyr)
full_join(month_df,
select(quart_df, -V2),
by = c("V1" = "V1"))
#> # A tibble: 3 x 8
#> V1 V2 V3.x V3.y V4 V5 V6 V7
#> <dbl> <dbl> <dbl> <chr> <chr> <chr> <chr> <chr>
#> 1 105 20080131 -0.0874 Y Y N N EQ
#> 2 105 20080229 -0.0161 Y Y N N EQ
#> 3 105 20080331 -0.0229 Y Y N N EQ
答案 1 :(得分:0)
您可以使用merge
:
Quarterly <- data.frame(Q=105, D=20080331, Y1="Y", Y2="Y", N1="N", N2="N", E="EQ")
Monthly <- data.frame(Q = c(105,105,105),
D = c(20080131, 20080229, 20080331),
V = c(-0.087372,-0.01609, -0.022895))
merge(Monthly, Quarterly[,-2])
或
merge(Monthly, Quarterly[,-which(names(Quarterly) == "D")])
将输出相同的结果:
Q D V Y1 Y2 N1 N2 E
1 105 20080131 -0.087372 Y Y N N EQ
2 105 20080229 -0.016090 Y Y N N EQ
3 105 20080331 -0.022895 Y Y N N EQ
PS。下次,请在reproductible format
中提交问题