如何将大型日常金融数据集从宽格式转换为 R 上的长格式?

问题描述 投票:0回答:1

我有一个具有不同期限的宽格式每日债券数据集,针对每个期限进行组织,其中一列用于观察日期,另一列包含利率信息,第三列用于债券到期日。由于债券的期限不同,因此在无法获得数据时存在 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 dataframe pivot tidyverse
1个回答
0
投票

基础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
© www.soinside.com 2019 - 2024. All rights reserved.