[R] Help Converting Calendars

Jim Lemon drjimlemon at gmail.com
Thu Nov 9 01:10:11 CET 2017


Or if you want a slightly prettier output:

formatDate<-function(x) {
 return(paste(x$year,formatC(x$month,width=2,flag=0),
 formatC(x$day,width=2,flag=0),sep="-"))
}
formatDate(p.dates)

Jim


On Thu, Nov 9, 2017 at 10:32 AM, David L Carlson <dcarlson at tamu.edu> wrote:
> How about
>
>> p_dates <- paste0(p.dates[[3]], "-", p.dates[[2]], "-", p.dates[[1]])
>> myData$p_dates <- p_dates
>> print(myData, right=FALSE)
>   dates      p_dates
> 1 2017-10-01 1396-7-9
> 2 2017-10-02 1396-7-10
> 3 2017-10-03 1396-7-11
>> str(myData)
> 'data.frame':   3 obs. of  2 variables:
>  $ dates  : Date, format: "2017-10-01" "2017-10-02" ...
>  $ p_dates: chr  "1396-7-9" "1396-7-10" "1396-7-11"
>
> But p_dates is a character field so it will not work with numeric expressions:
>
>> with(myData, dates[3] - dates[1])
> Time difference of 2 days
> # But
>> with(myData, p_dates[3] - p_dates[1])
> Error in p_dates[3] - p_dates[1] :
>   non-numeric argument to binary operator
>
> -----------------------------
> David L. Carlson
> Department of Anthropology
> Texas A&M University
>
> -----Original Message-----
> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Jeff Reichman
> Sent: Wednesday, November 8, 2017 5:05 PM
> To: r-help at r-project.org
> Subject: [R] Help Converting Calendars
>
> R-Help
>
> Trying  to convert a Gregorian calendar dataset to a Persian calendar
> dataset.  But I end up with a list and not sure what to do.  For example ...
>
> dates <- c("2017-10-1","2017-10-2","2017-10-3")
> myData <- data.frame(dates)
> myData$dates <- as.Date(myData$dates, format = "%Y-%m-%d")
>> myData
>        dates
> 1 2017-10-01
> 2 2017-10-02
> 3 2017-10-03
> library(ConvCalendar)
> p.dates <- as.OtherDate(myData$dates,"persian")
> # after convering I get the following list
>> p.dates
> $day
> [1]  9 10 11
>
> $month
> [1] 7 7 7
>
> $year
> [1] 1396 1396 1396
>
> attr(,"row.names")
> [1] 1 2 3
> attr(,"class")
> [1] "OtherDate"
> attr(,"calendar")
> [1] "persian"
>
> How do I take that,  to end up with
>
>        dates    p_dates
> 1 2017-10-01    1396-7-9
> 2 2017-10-02    1396-7-10
> 3 2017-10-03    1396-7-11
>
> Jeff Reichman
> Penn State
>
> ______________________________________________
> 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.
>
> ______________________________________________
> 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