2017-09-18 16 views
0

20100101,2010-01-01,2010/01/01の3種類の時刻データが含まれている場合、「%Y-%m」やJan 2010などの列を取得するにはどうすればよいですか。TidyverseなどでRの日付データから年と月を抽出する方法はありますか?


@akrunさん、ありがとうございます。

# `XXXX-XX` 
```{r} 
library(tidyverse) 
df <- data_frame(
    x = "20100101" 
) 
df %>% 
    mutate(yearMon = format(lubridate::ymd(x), "%Y-%m")) 
``` 

# `Jan XXXX` 
```{r} 
df %>% 
mutate(yearMon = zoo::as.yearmon(lubridate::ymd(x))) 
``` 
+0

あなただけの区切り文字の種類を持っている場合は、それらを取り除くと形式 - '形式(as.Date(GSUB(」 – thelatemail

答えて

3

彼らはすべての年、月、日をたどるように、我々はymd

library(tidyverse) 
df1 %>% 
    mutate(yearMon = format(ymd(Date), "%Y-%m")) 
    #if we need format "Jan 2010" 
    #mutate(yearMon = format(ymd(Date), "%b-%Y")) 

を使用することができます別のオプションはありませんがあると私たちはanytimeライブラリを使用することができますzoo

library(zoo) 
df1 %>% 
    mutate(yearMon = as.yearmon(ymd(Date))) 
+1

yearmonの解決策は次のようになります: '.yearmon(gsub(" \ 0-9) "、" "、x、format ="%Y%m%d " \ D "、" "、日付)、"%Y%m%d ")"の場合、この場合は潤滑剤は必要ありません。 –

1

からyearmonです一貫した日付形式。

library(anytime) 
format(anytime(x), format = "%b %Y") 

#[1] "Jan 10" "Jan 10" "Jan 10" 

OR

format(anytime(x), format = "%Y-%m") 

#[1] "2010-01" "2010-01" "2010-01" 

データ

x <- c('20100101', '2010-01-01', '2010/01/01') 
関連する問題