2017-04-21 65 views
3

我正在處理一個只有年份和月份組件的月份變量data.frame。我的部分數據如下:lubridate是否具有與動物園的yearmon功能類似的功能?

 month   DIV MKTP 
1 1941-12 0.005752218 -4.87 
2 1942-01 0.005767111 0.79 
3 1942-02 0.005781771 -2.46 
4 1942-03 0.005859665 -6.58 
5 1942-04 0.005906924 -4.37 
6 1942-05 0.005890041 5.94 
7 1942-06 0.005941640 2.69 
8 1942-07 0.005962464 3.51 
9 1942-08 0.005936732 1.80 
10 1942-09 0.006007593 2.61 

我想將month變量轉換爲子日期格式,用於子目的。我的代碼如下:

require(zoo,dplyr) 
    df %>% 
    mutate(month = as.yearmon(month)) %>% 
    filter(month >= as.yearmon("1942-3") & month <= as.yearmon("1942-8")) 

我想知道,如果lubridate封裝具有相似的功能yearmon,可以採取年份和月份的組合輸入。

+1

我只是修改我的代碼,使之適用於例如 –

回答

2

我們可以通過yearmonth功能轉換爲Dateymd

library(tidyverse) 
df %>% 
    mutate(date = ymd(paste0(month, "-01"))) %>% 
    filter(year(date)>= 1942, month(date)>3, month(date)<=8, year(date) < 1943) %>% 
    select(-date) 
+1

非常感謝!這就是我要的! –

5

Here are lubridate's functions答案是否定的,因爲lubridate是處理日期和日期有天。您可以假定當天是01,並使用ymd轉換爲日期格式,或者只需使用zoo::yearmon即可。

+1

或者使用任何時間:: anydate後filter(「1941年至1912年」 ),這也假設日= 1 –

+0

如果是這樣,你如何解釋'yq()'函數...? –

+0

我將它解釋爲(1)隱藏在'ymd'文檔中,(2)解析年度季度而不是年份。 – neilfws

相關問題