Hi, Javier -

Thanks for your input. You have identified some of the anomalies.

The month calculation creates a problem with accuracy. I am using 30.44
days/month, an average based on 365/12. When the beginning and ending
months are the same, the result is 0. Again, a matter of interpretation,
depending on the number of days difference for the month. I really have no
need for that level of accuracy.

I did wrestle with a formula using IMON and IDAY, together with an IF
statement that compared the actual days, but the formula became entirely
too unwieldy for my pay grade. I was surprised to find, given the
usefulness of such a formula, that R:Base does not have an equivalent to
DATEDIF.

Again, Javier, thank you for your help and interest . . .

Regards, Chuck


On Sun, Nov 12, 2023 at 6:25 PM <javier.valen...@vtgonline.com> wrote:

> A couple of observations. I believe the calculations would depend on how
> you define a month (calendar or average elapsed days) and how you assign
> the month value. Do you assign February and May the same value even when
> one is 28 days long and the other 31?...there is also leap years…
>
> For example:
>
> DOB = 01/01/2022
>
> DOT = 03/01/2023
>
> Your formula will give you a value of 1 year and 1 month based on 424
> elapsed days, even when the calendar shows 2 months, i.e. January-March.
> The value would not change until you hit the 4th day of March (437
> elapsed days) when it would show 2 months.
>
> Taking it to an extreme, what do you assign a when the DOB and DOD are in
> the same year and same month? Do you assign 0 months or 1 month?
>
> Obviously going to a year-month-day would be more accurate but might be an
> overkill for your needs. If all you need is a good approximation, your
> approach is plenty good, otherwise, further calculation will be needed.
>
> Some function that you might want to look at:
>
> IMON(.vDate) gives you the month for the variable .vDate
>
> IYR(.Date) gives you the year for the variable .vDate
>
> JDATE(.vDate) gives you the Julian date with the format YYYYnnn where
> “YYYY” is the year for variable .vDate and “nnn” is the day number for that
> year and you can easily extract the values for calculations.
>
> Unfortunately, we don’t have (yet) a function comparable to Excel DATEDIF.
>
> We engineers tend to look not only at the big picture but also the small
> details, and often it can be seen as making it more complicated that need
> be; however, the little details that might never happen are the ones can
> bite you in the rear end when they do.
>
> Hopefully, the information is of use to you.
>
>
>
> Javier,
>
>
>
> Javier Valencia, PE
>
> 14315 S Twilight Ln
>
> Olathe, KS 66062
>
> 913-915-3137
>
>
>
>
>
> *From:* rbase-l@googlegroups.com <rbase-l@googlegroups.com> *On Behalf Of
> *Charles Stevens
> *Sent:* Sunday, November 12, 2023 2:38 PM
> *To:* rbase-l@googlegroups.com
> *Subject:* Re: Re[2]: [RBASE-L] - Calculating Age in Years, Months |
> PRIVATE
>
>
>
> Thanks, Randy -
>
>
>
> I was interested in the structure of the formula and wanted to see if
> anyone had a simpler approach to achieve the results. I have apx 152 of
> 6,300 rows containing fields with data in the database. The report gives
> fairly accurate results using my clumsy formula on which I spend an
> inordinate amount of time and effort. I have concluded, based somewhat on
> Bruce's response, to stick with what I have and that there is no simpler
> formula, such as the DATEDIF found in Excel.
>
>
>
> Thanks again for your interest and input.
>
>
>
> Cheers, Chuck
>
>
>
> On Sat, Nov 11, 2023 at 11:46 PM randyp ctags.com <ran...@ctags.com>
> wrote:
>
> If you are doing this for every row in your database, you might create a
> view rather than calculate row by row. You could add the Y & M as part of
> your report fields.
>
>
>
> You could limit your view to "WHERE DeathDateTime IS NOT NULL" , or "WHERE
> DeathDateTime EXISTS."
>
>
>
> Might something like this work?
>
> CREATE VIEW LifeYrMo  (YrsLife, MosLife) AS SELECT (
> (DeathDateTime-BirthDateTime)/365.25), ( ( (MOD(YrsLife))*365.25)/30.44)
> FROM ...
>
>
>
> Randy
> ------------------------------
>
> *From:* rbase-l@googlegroups.com <rbase-l@googlegroups.com> on behalf of
> Bruce Chitiea <rby...@safesectors.com>
> *Sent:* Saturday, November 11, 2023 9:43 AM
> *To:* rbase-l@googlegroups.com <rbase-l@googlegroups.com>
> *Subject:* Re[2]: [RBASE-L] - Calculating Age in Years, Months | PRIVATE
>
>
>
> I apologize for using the word "ugly" <insert excuse here>.
>
>
>
> Rather, your code is elegant in that it really could not be reduced
> further without one helluva lot of work, as the 2016 approach suggests.
>
>
>
> I should have remembered my 9th grade geometry final, where, confronted
> with a jungular tangle of lines, I brute-forced my way to QED through
> thisHere angle equals thatThere angle in 23 steps. Thought I was all that.
>
>
>
> The girl next to me reached QED in three.
>
>
>
> As to being more versed ... doubtful.
>
>
>
> Best, Bruce
>
>
>
> ------ Original Message ------
>
> From "Charles Stevens" <stevens...@gmail.com>
>
> To rbase-l@googlegroups.com
>
> Date 11/11/2023 7:29:29 AM
>
> Subject Re: [RBASE-L] - Calculating Age in Years, Months
>
>
>
> Hi, Bruce -
>
>
>
> Thanks for your time and response. I spent an inordinate amount of time
> and effort to create a working formula, and thought there must be an easier
> way. I had in mind a function similar to DATEDIF in Excel.
>
>
>
> Glad to have the opinion of someone more versed in R:Base than I am. I
> will use it - as is - in all its ugliness, since it works.
>
>
>
> Cheers,
>
>
>
> On Fri, Nov 10, 2023 at 10:24 PM Bruce Chitiea <rby...@safesectors.com>
> wrote:
>
> Charles: Played with it a bit, searching for elegance. The only fully
> duplicated segment 'DOD - DOB' is wrapped on all sides by unique function
> strings, so atomization likely creates more work than it's worth. So, ugly
> it may be; but if it works ...
>
>
>
> Alternately, from the list in 2016:
>
>
>
> CLEAR VAR v%
>
> CLS
>
>
>
> SET VAR vBegDATE DATE = NULL
>
> SET VAR vEndDATE DATE = NULL
>
> SET VAR vBegTIME TIME = NULL
>
> SET VAR vEndTIME TIME = NULL
>
>
>
> SET VAR vBegDATE = (RDATE(4,21,2016))
>
> SET VAR vEndDATE = (RDATE(4,27,2016))
>
> SET VAR vBegTIME = (RTIME(10,20,0))
>
> SET VAR vEndTIME = (RTIME(14,15,0))
>
>
>
> SET VAR vBegDATETIME = (DATETIME(.vBegDATE, .vBegTIME ))
>
> SET VAR vEndDATETIME = (DATETIME(.vEndDATE, .vEndTIME ))
>
>
>
> SET VAR vElapsed_MIN = ((.vEndDATETIME - .vBegDATETIME)/60)
>
> SET VAR vElapsed_HR  = (ROUND((.vElapsed_MIN/60),3))
>
> SET VAR vElapsed_DAY = (ROUND((.vElapsed_HR/24),3))
>
>
>
> SHOW VARIABLES V%
>
>
>
> RETURN
>
>
>
> Maybe there's some gold there.
>
>
>
> Best, Bruce
>
>
>
> Bruce A. Chitiea
>
> SafeSectors, Inc.
>
> 1142 S Diamond Bar Blvd # 442
>
> Diamond Bar CA 91765-2203
>
>
>
> rby...@safesectors.com
>
> (909) 238-9012 m
>
>
> ------ Original Message ------
>
> From "Charles Stevens" <stevens...@gmail.com>
>
> To rbase-l@googlegroups.com
>
> Date 11/10/2023 1:36:33 PM
>
> Subject [RBASE-L] - Calculating Age in Years, Months
>
>
>
> Hello All -
>
>
>
> I am wondering if there is a more elegant way to find the difference
> between two days expressed as Years, Months, than what I have been using,
> below, which produces the results nny nnM, but seems clumsy:
>
>
>
> *(CTXT(INT((DOD - DOB)/365.25))+'Y')&(CTXT(INT(MOD(DOD -
> DOB,365.25)/30.44))+'M')  *
>
>
>
> Where 'DOD'=Date of Death, 'DOB'=Date of Birth, 365.25=number of days in a
> year, and 30.44=number of days in a month.
>
>
>
> Seems to me this should be a commonly needed calculation.
>
>
>
>
>
>
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/CADAyCN_2mA%3DZmh3jgYnEaRDZ3JWgudXfBNTdP_Km704YLuKGEA%40mail.gmail.com
> <https://groups.google.com/d/msgid/rbase-l/CADAyCN_2mA%3DZmh3jgYnEaRDZ3JWgudXfBNTdP_Km704YLuKGEA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/emb1486432-408d-4603-94dc-fdd6aa373662%40ffc94789.com
> <https://groups.google.com/d/msgid/rbase-l/emb1486432-408d-4603-94dc-fdd6aa373662%40ffc94789.com?utm_medium=email&utm_source=footer>
> .
>
>
>
>
>
>
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/CADAyCN-eDQc%2B20aCaacxJth%3D3B-7aajOAO4kt9qy-3MfTqO9tA%40mail.gmail.com
> <https://groups.google.com/d/msgid/rbase-l/CADAyCN-eDQc%2B20aCaacxJth%3D3B-7aajOAO4kt9qy-3MfTqO9tA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/em5c0c0571-c57b-4b66-b148-a7199a992f97%40ffc94789.com
> <https://groups.google.com/d/msgid/rbase-l/em5c0c0571-c57b-4b66-b148-a7199a992f97%40ffc94789.com?utm_medium=email&utm_source=footer>
> .
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/PH0PR11MB5112E3FD8C4C35483AEF63B2C7ACA%40PH0PR11MB5112.namprd11.prod.outlook.com
> <https://groups.google.com/d/msgid/rbase-l/PH0PR11MB5112E3FD8C4C35483AEF63B2C7ACA%40PH0PR11MB5112.namprd11.prod.outlook.com?utm_medium=email&utm_source=footer>
> .
>
>
>
>
>
>
>
>
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/CADAyCN9vsn8zjwMQLk6Nto%3D6sQ%2Brtq95NReALaLp6-kgWr6yLA%40mail.gmail.com
> <https://groups.google.com/d/msgid/rbase-l/CADAyCN9vsn8zjwMQLk6Nto%3D6sQ%2Brtq95NReALaLp6-kgWr6yLA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> For group guidelines, visit
> http://www.rbase.com/support/usersgroup_guidelines.php
> ---
> You received this message because you are subscribed to the Google Groups
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rbase-l+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rbase-l/160b01da15bf%247cf838b0%2476e8aa10%24%40vtgonline.com
> <https://groups.google.com/d/msgid/rbase-l/160b01da15bf%247cf838b0%2476e8aa10%24%40vtgonline.com?utm_medium=email&utm_source=footer>
> .
>


--

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rbase-l+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/CADAyCN_WwoT%3DRGaOgy3X6d8Ov9034RQLuz%3D3NhLScccmfZu4-Q%40mail.gmail.com.

Reply via email to