[R] Extract year from date
MacQueen, Don
macqueen1 at llnl.gov
Mon Mar 9 16:59:25 CET 2015
You need to solve step 1 (converting to Date class) before you can solve
step 2 (getting the year as a number).
In the data you are starting with, the first value in the Date column is
41163. You don't say whether that column is numeric or character, so let's
try it both ways:
> as.Date('41163','%m/%d/%Y')
[1] NA
> as.Date(41163,'%m/%d/%Y')
Error in charToDate(x) :
character string is not in a standard unambiguous format
Whatever it is, it is not formatted "%m/%d/%Y", so step 1 fails.
On the other hand, if you start with something that is in fact formatted
as a date:
> tmp <- as.Date('3/2/2015','%m/%d/%Y')
> format(tmp,'%Y')
[1] "2015"
> as.numeric(format(tmp,'%Y'))
[1] 2015
you get the year as a number, using the method you tried.
So, what do 41163 and all the rest of the numbers in your Date column
actually represent???
Mark Sharp is probably correct in expecting that they represent the number
of days since some base date, and an easy way to see that would be to try
the core of step 1:
> as.Date(41163)
Error in as.Date.numeric(41163) : 'origin' must be supplied
It would be up to you, of course, to find out what the origin is. If
1/1/1900 is correct, then
> as.numeric( format( as.Date( 41163, origin='1900-1-1'), '%Y'))
[1] 2012
(I personally prefer to use base R as much as possible)
-Don
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
On 3/7/15, 11:50 PM, "Steve Archambault" <archstevej at gmail.com> wrote:
>Hi all,
>
>I am trying in vain to create a new object "Year" in my data frame from
>existing Date data. I have tried many different approaches, but can't seem
>to get it to work. Here is an example of some code I tried.
>
>date1<- as.Date(wells$Date,"%m/%d/%Y")
>wells$year<-as.numeric(format(date1, "%Y"))
>
>I am starting with data that looks like this.
>
> ID Date DepthtoWater_bgs test test2
>1 BC-0004 41163 260.60 3 1
>2 BC-0004 41255 261.65 4 2
>3 BC-0003 41345 166.58 5 3
>4 BC-0002 41351 317.85 6 4
>5 BC-0004 41355 262.15 7 5
>6 BC-0003 41438 167.55 8 6
>7 BC-0004 41438 265.45 9 7
>8 BC-0002 41443 317.25 10 8
>9 BC-0002 41521 321.25 11 9
>10 BC-0003 41522 168.65 12 10
>11 BC-0004 41522 266.15 13 11
>12 BC-0003 41627 168.95 14 12
>13 BC-0004 41627 265.25 15 13
>14 BC-0002 41634 312.31 16 14
>15 BC-0003 41703 169.25 17 15
>16 BC-0004 41703 265.05 18 16
>17 BC-0002 41710 313.01 19 17
>18 BC-0003 41795 168.85 20 18
>19 BC-0004 41795 266.95 21 19
>20 BC-0002 41801 330.41 22 20
>21 BC-0003 41905 169.75 23 21
>22 BC-0004 41905 267.75 24 22
>23 BC-0002 41906 321.01 25 23
>
>Any help would be greatly appreciated!
>
>-Steve
>Sent from my iPhone
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list