# H2O frame functions¶

The following lists all H2O functions that Stata supports. These functions are mainly used in H2O expressions when creating or replacing the contents of the columns in the current H2O frame, or when filtering observations. The functions are organized under the following headings:

## Datetime functions¶

` `**day(***dt*)
Description: the numeric day corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **int** column with integers 1 to 31 or *missing*
**dow(***dt*)
Description: the numeric day of the week corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **enum** column with values **Mon**, **Tue**, **Wed**, **Thu**, **Fri**, **Sat**, **Sun**,
or *missing*
**hour(***dt*)
Description: the hour corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **int** column with integers 0 through 23 or *missing*
**minute(***dt*)
Description: the minute corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **int** column with integers 0 through 59 or *missing*
**month(***dt*)
Description: the numeric month corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **int** column with integers 1 to 12 or *missing*
**second(***dt*)
Description: the second corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **int** column with integers 0 through 59 or *missing*
**week(***dt*)
Description: the numeric week of the year corresponding to a **time** column
Note: The first week of a year is the first 7-day period of the
year.
Domain *dt*: a **time** column
Range: an **int** column with integers 1 to 52 or *missing*
**year(***dt*)
Description: the numeric year corresponding to a **time** column
Domain *dt*: a **time** column
Range: an **int** column with integers 1 to 9999 or *missing*

## Mathematical functions¶

` `**abs(***x*)
Description: the absolute value of *x*
Domain: -infinity to infinity or *missing*
Range: 0 to infinity or *missing*
**ceil(***x*)
Description: the unique integer *n* such that *n* - 1 < *x* < *n*;
or *missing* if *x* is *missing*
Also see **floor(***x*), **round(***x*), and **trunc(***x*).
Domain: -infinity to infinity or *missing*
Range: integers in -infinity to infinity or *missing*
**exp(***x*)
Description: the exponential function of *e*^*x*
This function is the inverse of **log(***x*).
Domain: -infinity to infinity or *missing*
Range: 0 to infinity or *missing*
**expm1(***x*)
Description: *e*^*x* - 1
Domain: -infinity to infinity or *missing*
Range: -1 to infinity or *missing*
**floor(***x*)
Description: the unique integer *n* such that *n* <= *x* < *n* + 1;
or *missing* if *x* is *missing*
Also see **ceil(***x*), **round(***x*), and **trunc(***x*).
Domain: -infinity to infinity or *missing*
Range: integers in -infinity to infinity or *missing*
**log(***x*)
Description: the natural logarithm
Domain: **c(epsdouble)** to infinity or *missing*
Range: -infinity to infinity or *missing*
**log10(***x*)
Description: the base-10 logarithm of *x*
Domain: **c(epsdouble)** to infinity or *missing*
Range: -infinity to infinity or *missing*
**log1p(***x*)
Description: the natural logarithm of 1+*x*
Domain: -1+**c(epsdouble)** to infinity or *missing*
Range: -infinity to infinity or *missing*
**log2(x)**
Description: the base-2 logarithm of *x*
Domain: **c(epsdouble)** to infinity or *missing*
Range: -infinity to infinity or *missing*
**round(***x*,*digits*) or **round(***x*)
Description: *x* rounded to the number of decimal places specified by *digits*
If *digits* is not specified, *x* will be rounded to an integer.
For rounding, H2O uses the "rounding half to even" mode
(IEC 60559 standard). For example, **round(2.5)** = 2 and
**round(3.5)** = 4. Also see **ceil(***x*), **floor(***x*), and **trunc(***x*).
Domain *x*: -infinity to infinity or *missing*
Domain digits: integers >= 0
Range: -infinity to infinity or *missing*
**sign(***x*)
Description: the sign of *x*: -1 if *x* < 0, 0 if *x* = 0, 1 if *x* > 0, or *missing*
if *x* is *missing*
Domain: -infinity to infinity or *missing*
Range: -1, 0, 1, or *missing*
**sqrt(***x*)
Description: the square root of *x*
Domain: 0 to infinity or *missing*
Range: 0 to infinity or *missing*
**trunc(***x*)
Description: the integer obtained by truncating *x* toward 0 (thus, **trunc(5.2)** = 5
and **trunc(-5.8)** = -5), or *missing* if *x* is *missing*
Also see **ceil(***x*), **floor(***x*), and **round(***x*).
Domain: -infinity to infinity or *missing*
Range: integers in -infinity to infinity or *missing*

## String functions¶

` `**nchar(***s*)
Description: the number of characters in string *s*
Domain *s*: strings
Range: integers >= 0
**tolower(***s*)
Description: lowercase characters in string *s*
Domain *s*: strings
Range: strings with lowercase characters
**lstrip(***s*) or **lstrip(***s*,*prefix*)
Description: *s* without leading characters
Note: The *prefix* argument specifies that the string prefix be
removed from the string if it is found at the beginning of the
string.
Domain *s*: strings
Domain *prefix*: strings
Range: strings without leading characters
**rstrip(***s*) or **rstrip(***s*,*suffix*)
Description: *s* without trailing characters
Note: The *suffix* argument specifies that the string suffix be
removed from the string if it is found at the end of the string.
Domain *s*: strings
Domain *suffix*: strings
Range: strings without trailing characters
**toupper(***s*)
Description: uppercase characters in string *s*
Domain *s*: strings
Range: strings with uppercase characters
**substring(***s*,*n1*,*n2*)
Description: the substring of *s*, starting at *n1*, for a length of *n2*
If *n1* is greater than the length of the string, an empty string is
returned; if *n2* = . (*missing*), the remaining portion of the string
is returned.
Domain *s*: strings
Domain *n1*: integers >= 1
Domain *n2*: integers >= 1
Range: strings

## Trigonometric functions¶

` `**acos(***x*)
Description: the radian value of the arccosine of *x*
Domain: -1 to 1 or *missing*
Range: 0 to pi or *missing*
**acosh(***x*)
Description: the inverse hyperbolic cosine of *x*,
**acosh(***x*) = ln{*x*+sqrt(*x***x* - 1)}
Domain: 1 to infinity or *missing*
Range: 0 to infinity or *missing*
**asin(***x*)
Description: the radian value of the arcsine of *x*
Domain: -1 to 1 or *missing*
Range: -pi/2 to pi/2 or *missing*
**asinh(***x*)
Description: the inverse hyperbolic sine of *x*,
**asinh(***x*) = ln{*x*+sqrt(*x***x* + 1)}
Domain: -infinity to infinity or *missing*
Range: -infinity to infinity or *missing*
**atan(***x*)
Description: the radian value of the arctangent of *x*
Domain: -infinity to infinity or *missing*
Range: -pi/2 to pi/2 or *missing*
**atanh(***x*)
Description: the inverse hyperbolic tangent of *x*,
**atanh(***x*) = (1/2){ln(1+*x*) - ln(1-*x*)}
Domain: -1 to 1 or *missing*
Range: -infinity to infinity or *missing*
**cos(***x*)
Description: the cosine of *x*, where *x* is in radians
Domain: -infinity to infinity or *missing*
Range: -1 to 1 or *missing*
**cosh(***x*)
Description: the hyperbolic cosine of *x*,
**cosh(***x*) = {exp(*x*) + exp(-*x*)}/2
Domain: -infinity to infinity or *missing*
Range: 1 to infinity or *missing*
**sin(***x*)
Description: the sine of *x*, where *x* is in radians
Domain: -infinity to infinity or *missing*
Range: -1 to 1 or *missing*
**sinh(***x*)
Description: the hyperbolic sine of *x*,
**sinh(***x*) = {exp(*x*) - exp(-*x*)}/2
Domain: -infinity to infinity or *missing*
Range: -infinity to infinity or *missing*
**tan(***x*)
Description: the tangent of *x*, where *x* is in radians
Domain: -infinity to infinity or *missing*
Range: -infinity to infinity or *missing*
**tanh(***x*)
Description: the hyperbolic tangent of *x*,
**tanh(***x*) = {exp(*x*) - exp(-*x*)}/{exp(*x*) + exp(-*x*)}
Domain: -infinity to infinity or *missing*
Range: -1 to 1 or *missing*