View source: R/transform.scdf.R
moving_median | R Documentation |
Takes an scdf and applies transformations to each individual case. This is useful to calculate or modify new variables.
moving_median(x, lag = 1)
moving_mean(x, lag = 1)
local_regression(x, mt = 1:length(x), f = 0.2)
set_na_at(x, first_of, positions = 0)
center_at(x, at = TRUE, shift = 0, part = 0)
first_of(x, positions = 0)
across_cases(...)
all_cases(...)
rowwise(...)
## S3 method for class 'scdf'
transform(`_data`, ...)
x |
A logical vector. |
lag |
Number of values surrounding a value to calculate the average |
mt |
A vector with measurement times. |
f |
the proportion of surrounding data influencing each data point. |
first_of |
A logical vector |
positions |
A numeric vector with relative positions to the first appearance of a TRUE value in x. |
at |
A logical vector. E.g. |
shift |
A value indicating a shift in measurement times for centring.
E.g. |
part |
A numeric value between 0 and 1. |
... |
Expressions. |
_data |
An scdf. |
This function is a method of the generic transform()
function.
Unlike the generic version, expressions are evaluated serially:
the result of one expression is used as the basis for subsequent computations.
Several helper functions can be used inside expressions:
n()
: returns the number of measurements in a case.
all_cases()
: extracts the values of a variable across all cases.
Takes an expression as argument.
For example:
mean(all_cases(values))
calculates the mean of values
across all cases.
mean(all_cases(values[phase == "A"]))
calculates the mean of all values where phase == "A"
.
rowwise()
: applies a calculation separately to each row.
Example: rowwise(sum(values, mt, na.rm = TRUE))
.
across_cases()
: creates new variables or replaces existing ones across all cases.
Example: across_cases(values_ranked = rank(values, na.last = "keep"))
An scdf.
Other data manipulation functions:
add_l2()
,
as.data.frame.scdf()
,
as_scdf()
,
fill_missing()
,
print.sc_outlier()
,
ranks()
,
rescale()
,
scdf()
,
select_cases()
,
set_vars()
,
shift()
,
smooth_cases()
,
standardize()
,
truncate_phase()
## Creates a single-case with frequency distributions. The proportion and
## percentage of the frequencies are calculated with transform:
design <- design(
n = 3,
level = 5,
distribution = "binomial",
n_trials = 20,
start_value = 0.5
)
study <- random_scdf(design)
transform(study, proportion = values/trials, percentage = proportion * 100)
## Z standardize the dependent variable and add two new variables:
exampleAB |>
transform(
values = scale(values),
mean_values = mean(values),
sd_values = sd(values)
)
## Use `all` to calculate global variables.
exampleAB |>
transform(
values_center_case = values - mean(values[phase == "A"]),
values_center_global = values - mean(all(values[phase == "A"])),
value_dif = values_center_case - values_center_global
)
## Use `across_cases` to calculate or replace a variable with values from
## all cases. E.g., standardize the dependent variable:
exampleABC |>
transform(
across_cases(values = scale(values))
)
## Rank transform the values based on all cases vs. within each case:
exampleABC |>
transform(
across_cases(values_across = rank(values, na.last="keep")),
value_within = rank(values, na.last="keep")
)
## Three helper functions to smooth the data
Huber2014$Berta |>
transform(
"compliance (moving median)" = moving_median(compliance),
"compliance (moving mean)" = moving_mean(compliance),
"compliance (local regression)" = local_regression(compliance, mt)
)
## Function first_of() helps to set NAs for specific phases.
## E.g., you want to replace the first two values of phase A and the first
## value of phase B and its preceding value.
byHeart2011 |>
transform(
values = set_na_at(values, phase == "A", 0:1),
values = set_na_at(values, phase == "B", -1:0)
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.