compute {expss} | R Documentation |
Modify data.frame/modify subset of the data.frame
Description
compute
evaluates expressionexpr
in the context of data.framedata
and return original data possibly modified.calculate
evaluates expressionexpr
in the context of data.framedata
and return value of the evaluated expression. Functionuse_labels
is shortcut forcalculate
with argumentuse_labels
set toTRUE
. Whenuse_labels
is TRUE there is a special shortcut for entire data.frame -..data
.do_if
modifies only rows for whichcond
equals to TRUE. Other rows remain unchanged. Newly created variables also will have values only in rows for whichcond
have TRUE. There will be NA's in other rows. This function tries to mimic SPSS "DO IF(). ... END IF." statement.
Full-featured %to%
is available in the expressions for addressing
range of variables.
There is a special constant .N
which equals to number of cases in
data
for usage in expression inside compute
/calculate
.
Inside do_if
.N
gives number of rows which will be affected by
expressions. For parametrization (variable substitution) see .. or
examples. Sometimes it is useful to create new empty variable inside compute.
You can use .new_var
function for this task. This function creates
variable of length .N
filled with NA. See examples.
modify
is an alias for compute
, modify_if
is
an alias for do_if
and calc
is an alias for calculate
.
Usage
compute(data, ...)
modify(data, ...)
do_if(data, cond, ...)
modify_if(data, cond, ...)
calculate(data, expr, use_labels = FALSE)
use_labels(data, expr)
calc(data, expr, use_labels = FALSE)
Arguments
data |
data.frame/list of data.frames. If |
... |
expressions that should be evaluated in the context of data.frame
|
cond |
logical vector or expression. Expression will be evaluated in the context of the data. |
expr |
expression that should be evaluated in the context of data.frame |
use_labels |
logical. Experimental feature. If it equals to |
Value
compute
and do_if
functions return modified
data.frame/list of modified data.frames, calculate
returns value of
the evaluated expression/list of values.
Examples
dfs = data.frame(
test = 1:5,
a = rep(10, 5),
b_1 = rep(11, 5),
b_2 = rep(12, 5),
b_3 = rep(13, 5),
b_4 = rep(14, 5),
b_5 = rep(15, 5)
)
# compute sum of b* variables and attach it to 'dfs'
let(dfs,
b_total = sum_row(b_1 %to% b_5),
b_total = set_var_lab(b_total, "Sum of b"),
random_numbers = runif(.N) # .N usage
) %>% print()
# calculate sum of b* variables and return it
query(dfs, sum_row(b_1 %to% b_5))
# set values to existing/new variables
let(dfs,
columns('new_b{1:5}') := b_1 %to% b_5
) %>% print()
# conditional modification
let_if(dfs, test %in% 2:4,
a = a + 1,
b_total = sum_row(b_1 %to% b_5),
random_numbers = runif(.N) # .N usage
) %>% print()
# variable substitution
name1 = "a"
name2 = "new_var"
let(dfs,
(name2) := get(name1)*2
) %>% print()
# 'use_labels' examples. Utilization of labels in base R.
data(mtcars)
mtcars = apply_labels(mtcars,
mpg = "Miles/(US) gallon",
cyl = "Number of cylinders",
disp = "Displacement (cu.in.)",
hp = "Gross horsepower",
drat = "Rear axle ratio",
wt = "Weight (lb/1000)",
qsec = "1/4 mile time",
vs = "Engine",
vs = c("V-engine" = 0,
"Straight engine" = 1),
am = "Transmission",
am = c("Automatic" = 0,
"Manual"=1),
gear = "Number of forward gears",
carb = "Number of carburetors"
)
use_labels(mtcars, table(am, vs))
## Not run:
use_labels(mtcars, plot(mpg, hp))
## End(Not run)
mtcars %>%
use_labels(lm(mpg ~ disp + hp + wt)) %>%
summary()