我有一個如下所示的資料集:
> ex
# A tibble: 10 × 2
tenor delivery_window
<chr> <chr>
1 month Nov 22
2 quarter Jan 22
3 year Cal 24
4 year Cal 22
5 month Feb 22
6 quarter Jan 21
7 month Sep 22
8 quarter Jan 21
9 month Jun 21
10 month Aug 21
我想把它變成這樣的東西:
> ex
# A tibble: 10 × 3
tenor delivery_window new_tenor
<chr> <chr> <chr>
1 month Nov 22 Nov 22
2 quarter Jan 22 Q1 22
3 year Cal 24 Cal 24
4 year Cal 22 Cal 22
5 month Feb 22 Feb 22
6 quarter Jan 21 Q1 21
7 month Sep 22 Sep 22
8 quarter Jan 21 Q1 21
9 month Jun 21 Jun 21
10 month Aug 21 Aug 21
也就是說,如果tenor是quarter,我只想顯示對應于 的季度delivery window,而不是月份。每月和每年的期限可以保持不變。
有人可以給我一個關于如何實作這一目標的提示嗎?先感謝您。
編輯
new_tenor應該是Q1 YY從一月到三月的Q2 YY幾個月,從Apr YY到Jun YY的Q3 YY幾個月,從Jul YY到的幾個月Sep YY,以及從到Q4 YY的幾個月。Oct YYDec YY
uj5u.com熱心網友回復:
我們可以轉換為yearqtrwith as.yearqtr(from zoo),并使用case_when轉換后的值替換 'delivery_window' 中的元素
library(dplyr)
library(stringr)
library(zoo)
ex <- ex %>%
mutate(new_tenor = case_when(tenor == 'quarter'
~ str_replace(as.yearqtr(paste('1', delivery_window),
'%d %b %Y'), "(\\d ) (\\w )", "\\2 \\1")
, TRUE ~ delivery_window))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480391.html
