Jaar uittrekken vanaf datum

Hoe kan ik de eerste elementen van een variabele verwijderen, vooral als deze variabele speciale tekens heeft. Ik heb bijvoorbeeld de volgende kolom:

Date
01/01/2009
01/01/2010
01/01/2011
01/01/2012

Ik heb een nieuwe kolom nodig, zoals de volgende:

Date
2009
2010
2011
2012

Antwoord 1, autoriteit 100%

Als al uw datums even breed zijn, kunt u de datums in een vector plaatsen en substring gebruiken

Date
a <- c("01/01/2009", "01/01/2010" , "01/01/2011")
substring(a,7,10) #This takes string and only keeps the characters beginning in position 7 to position 10

uitvoer

[1] "2009" "2010" "2011"

Antwoord 2, autoriteit 93%

Zoals besproken in de opmerkingen, kan dit worden bereikt door de invoer om te zetten in de indeling dateen het jaartal eruit te halen, bijvoorbeeld als volgt:

format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y")

Antwoord 3, autoriteit 91%

library(lubridate)
a=mdy(b)
year(a)

https://cran.r-project.org/ web/packages/lubridate/vignettes/lubridate.html
http://vita.had.co.nz/papers/lubridate.pdf


Antwoord 4, autoriteit 90%

Wanneer u uw variabele converteert naar date:

date <-  as.Date('10/30/2018','%m/%d/%Y')

je kunt dan de gewenste elementen uitknippen en nieuwe variabelen maken, zoals jaar:

year <- as.numeric(format(date,'%Y'))

of maand:

month <- as.numeric(format(date,'%m'))

Antwoord 5, autoriteit 17%

Dit is meer advies dan een specifiek antwoord, maar mijn suggestie is om datums onmiddellijk naar datumvariabelen te converteren, in plaats van ze als strings te bewaren. Op deze manier kunt u er datum- (en tijd-)functies op gebruiken, in plaats van te proberen zeer lastige tijdelijke oplossingen te gebruiken.

Zoals gezegd heeft het smeermiddelpakket mooie extractiefuncties.

Voor sommige projecten heb ik gemerkt dat het handig is om vanaf het begin de datums voor het maken van de stukjes te maken:
maak om te beginnen variabelen voor jaar, maand, dag (van de maand) en dag (van de week).
Dit kan samenvattingen, tabellen en grafieken vereenvoudigen, omdat de extractiecode los staat van de samenvatting/tabel/grafiekcode, en omdat als u deze moet wijzigen, u die wijzigingen niet op meerdere plaatsen hoeft uit te rollen.


Antwoord 6, autoriteit 17%

Als u het date-pakket, dit kan vrij eenvoudig worden gedaan.

library(date)
Date <- c("01/01/2009", "01/01/2010", "01/01/2011", "01/01/2012")
Date <- as.date(Date)
Date
# [1] 1Jan2009 1Jan2010 1Jan2011 1Jan2012
date.mdy(Date)$year
# [1] 2009 2010 2011 2012
## be aware that these are now integers and thus different methods may be invoked:
str(date.mdy(Date)$year)
# int [1:4] 2009 2010 2011 2012
summary(Date)
#     First      Last   
# "1Jan2009" "1Jan2012" 
summary(date.mdy(Date)$year)
#    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#    2009    2010    2010    2010    2011    2012 

Antwoord 7, Autoriteit 4%

Want enige tijd, kunt u ook alleen vertrouwen op de data.tablePAKKET en ITS IDateCLASSE PLUS GEBRUIKTE FUNCTIES (Controleer ?as.IDate()). Het is dus niet nodig om bovendien lubridate.

require(data.table)
a <- c("01/01/2009", "01/01/2010" , "01/01/2011")
year(as.IDate(a, '%d/%m/%Y')) # all data.table functions

Other episodes