2017-01-03 3 views
-5

Ich habe ein Dataset, das das Jahr und den Monat kombiniert zu einer einzigen ganzen Zahl enthält.Drop-Teil einer ganzen Zahl in R

Beispiel-Datensatz:

dataset = c(201601, 201602, 201603, 201604,201605,201606,201607,201608,201609,201610, 201611 ,201612) 

Ich möchte aus jedem Datensatz in R. nur den Monat Teil extrahieren die erwartete Ausgabe ist:

dataset_months = c(01, 02, 03, 04,05,06,07,08,09,10,11,12) 

Wie kann ich das durchführen?

Antwort

3

Ihr erwartet aus put scheint eine Zeichenfolge zu sein, würde ich vorschlagen, dass Sie in der Integer-Welt für Effizienz und Komfort, so etwas wie (die Idee genommen von here)

((dataset/100) %% 1) * 100 
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 
## OR just `dataset - 201600` ? 

Sie könnten auch leicht erreichen dies mit substring bleiben (wenn Sie möchten ein character Vektor im Gegenzug)

substring(dataset, 5) 
# [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" 

Oder Sie

as.POSIXlt(paste0(as.character(dataset), "01"), format = "%Y%m%d")$mon + 1L 
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 
ein Datum Manipulation tun könnte
3

Wir verwenden substr

substr(dataset, nchar(dataset)-1, nchar(dataset)) 
#[1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" 

oder mit sub

sub(".{4}", "", dataset) 

Oder eine Option Date Manipulation

library(zoo) 
format(as.yearmon(as.character(dataset), "%Y%m"), "%m") 
#[1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" 
Verwandte Themen