我有一个具有不同期限的宽格式每日债券数据集,针对每个期限进行组织,其中一列用于观察日期,另一列包含利率信息,第三列用于债券到期日。由于债券的期限不同,因此在无法获得数据时存在 NA 值。我正在尝试将此数据框更改为长格式,其中我们有一个堆叠列用于“参考日期”,另一列用于“产量”,第三个用于“成熟度”,删除 NA 观察值。我尝试更长时间地使用枢轴,但没有成功。你能帮我解决这个问题吗?
我有这样的东西:
参考日期1 | 产量1 | 成熟度1 | 参考日期2 | 产量2 | 成熟度2 |
---|---|---|---|---|---|
2023-01-01 | 3.27 | 日期1 | 2023-01-01 | 3.47 | 日期2 |
2023-01-02 | 3.25 | 日期1 | 2023-01-02 | 3.45 | 日期2 |
2023-01-03 | 3.26 | 日期1 | 2023-01-03 | 3.46 | 日期2 |
2023-01-04 | 3.28 | 日期1 | 2023-01-04 | 3.48 | 日期2 |
2023-01-05 | 3.23 | 日期1 | 2023-01-05 | 3.43 | 日期2 |
2023-01-06 | 3.22 | 日期1 | 2023-01-06 | 3.42 | 日期2 |
2023-01-07 | 3.21 | 日期1 | 2023-01-07 | 3.41 | 日期2 |
2023-01-08 | 3.29 | 日期1 | 2023-01-08 | 不适用 | 日期2 |
2023-01-09 | 3.25 | 日期1 |
并期待得到这样的东西
参考日期 | 产量 | 成熟度 | 内存_日期 | mem_yield |
---|---|---|---|---|
2023-01-01 | 3.27 | 日期1 | 参考日期1 | 产量1 |
2023-01-01 | 3.47 | 日期2 | 参考日期2 | 产量2 |
2023-01-02 | 3.25 | 日期1 | 参考日期1 | 产量1 |
2023-01-03 | 3.46 | 日期2 | 参考日期2 | 产量2 |
2023-01-04 | 3.28 | 日期1 | 参考日期1 | 产量1 |
2023-01-04 | 3.48 | 日期2 | 参考日期2 | 产量2 |
2023-01-05 | 3.23 | 日期1 | 参考日期1 | 产量1 |
2023-01-05 | 3.43 | 日期2 | 参考日期2 | 产量2 |
2023-01-06 | 3.22 | 日期1 | 参考日期1 | 产量1 |
2023-01-06 | 3.42 | 日期2 | 参考日期2 | 产量2 |
2023-01-07 | 3.21 | 日期1 | 参考日期1 | 产量1 |
2023-01-07 | 3.41 | 日期2 | 参考日期2 | 产量2 |
2023-01-08 | 3.29 | 日期1 | 参考日期1 | 产量1 |
2023-01-09 | 3.25 | 日期1 | 参考日期1 | 产量1 |
我正在使用
x4_w <- pivot_longer(x4_vcto,cols = everything(),
names_to = c("mem_date", "mem_yield", "maturity",
values_to = c("ref_date","yield", values_drop_na=TRUE)
基础R:
reshape(df, seq(ncol(df)), dir='long', sep="")|>
transform(mem_date = paste0('Ref_date', time),
mem_yield = paste0('yield', time))
time Ref_date Yield Maturity id mem_date mem_yield
1.1 1 2023-01-01 3.27 date1 1 Ref_date1 yield1
2.1 1 2023-01-02 3.25 date1 2 Ref_date1 yield1
3.1 1 2023-01-03 3.26 date1 3 Ref_date1 yield1
4.1 1 2023-01-04 3.28 date1 4 Ref_date1 yield1
5.1 1 2023-01-05 3.23 date1 5 Ref_date1 yield1
6.1 1 2023-01-06 3.22 date1 6 Ref_date1 yield1
7.1 1 2023-01-07 3.21 date1 7 Ref_date1 yield1
8.1 1 2023-01-08 3.29 date1 8 Ref_date1 yield1
9.1 1 2023-01-09 3.25 date1 9 Ref_date1 yield1
1.2 2 2023-01-01 3.47 date2 1 Ref_date2 yield2
2.2 2 2023-01-02 3.45 date2 2 Ref_date2 yield2
3.2 2 2023-01-03 3.46 date2 3 Ref_date2 yield2
4.2 2 2023-01-04 3.48 date2 4 Ref_date2 yield2
5.2 2 2023-01-05 3.43 date2 5 Ref_date2 yield2
6.2 2 2023-01-06 3.42 date2 6 Ref_date2 yield2
7.2 2 2023-01-07 3.41 date2 7 Ref_date2 yield2
8.2 2 2023-01-08 NA date2 8 Ref_date2 yield2