forked from pharmaverse/admiral
-
Notifications
You must be signed in to change notification settings - Fork 0
/
derive_var_merged_summary.Rd
167 lines (145 loc) · 4.92 KB
/
derive_var_merged_summary.Rd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/derive_merged.R
\name{derive_var_merged_summary}
\alias{derive_var_merged_summary}
\title{Merge a Summary Variable}
\usage{
derive_var_merged_summary(
dataset,
dataset_add,
by_vars,
new_var,
filter_add = NULL,
analysis_var,
summary_fun
)
}
\arguments{
\item{dataset}{Input dataset
The variables specified by the \code{by_vars} argument are expected.}
\item{dataset_add}{Additional dataset
The variables specified by the \code{by_vars} and the \code{analysis_var} arguments
are expected.}
\item{by_vars}{Grouping variables
The values of \code{analysis_var} are summarized by the specified variables. The
summarized values are merged to the input dataset (\code{dataset}) by the
specified by variables.
\emph{Permitted Values}: list of variables created by \code{vars()}}
\item{new_var}{Variable to add
The specified variable is added to the input dataset (\code{dataset}) and set to
the summarized values.}
\item{filter_add}{Filter for additional dataset (\code{dataset_add})
Only observations fulfilling the specified condition are taken into account
for summarizing. If the argument is not specified, all observations are
considered.
\emph{Permitted Values}: a condition}
\item{analysis_var}{Analysis variable
The values of the specified variable are summarized by the function
specified for \code{summary_fun}.}
\item{summary_fun}{Summary function
The specified function that takes as input \code{analysis_var} and performs the
calculation. This can include built-in functions as well as user defined
functions, for example \code{mean} or \code{function(x) mean(x, na.rm = TRUE)}.}
}
\value{
The output dataset contains all observations and variables of the
input dataset and additionally the variable specified for \code{new_var}.
}
\description{
Merge a summary variable from a dataset to the input dataset.
}
\details{
\enumerate{
\item The records from the additional dataset (\code{dataset_add}) are restricted
to those matching the \code{filter_add} condition.
\item The values of the analysis variable (\code{analysis_var}) are summarized by
the summary function (\code{summary_fun}) for each by group (\code{by_vars}) in the
additional dataset (\code{dataset_add}).
\item The summarized values are merged to the input dataset as a new variable
(\code{new_var}). For observations without a matching observation in the
additional dataset the new variable is set to \code{NA}. Observations in the
additional dataset which have no matching observation in the input dataset
are ignored.
}
}
\examples{
library(tibble)
# Add a variable for the mean of AVAL within each visit
adbds <- tribble(
~USUBJID, ~AVISIT, ~ASEQ, ~AVAL,
"1", "WEEK 1", 1, 10,
"1", "WEEK 1", 2, NA,
"1", "WEEK 2", 3, NA,
"1", "WEEK 3", 4, 42,
"1", "WEEK 4", 5, 12,
"1", "WEEK 4", 6, 12,
"1", "WEEK 4", 7, 15,
"2", "WEEK 1", 1, 21,
"2", "WEEK 4", 2, 22
)
derive_var_merged_summary(
adbds,
dataset_add = adbds,
by_vars = vars(USUBJID, AVISIT),
new_var = MEANVIS,
analysis_var = AVAL,
summary_fun = function(x) mean(x, na.rm = TRUE)
)
# Add a variable listing the lesion ids at baseline
adsl <- tribble(
~USUBJID,
"1",
"2",
"3"
)
adtr <- tribble(
~USUBJID, ~AVISIT, ~LESIONID,
"1", "BASELINE", "INV-T1",
"1", "BASELINE", "INV-T2",
"1", "BASELINE", "INV-T3",
"1", "BASELINE", "INV-T4",
"1", "WEEK 1", "INV-T1",
"1", "WEEK 1", "INV-T2",
"1", "WEEK 1", "INV-T4",
"2", "BASELINE", "INV-T1",
"2", "BASELINE", "INV-T2",
"2", "BASELINE", "INV-T3",
"2", "WEEK 1", "INV-T1",
"2", "WEEK 1", "INV-N1"
)
derive_var_merged_summary(
adsl,
dataset_add = adtr,
by_vars = vars(USUBJID),
filter_add = AVISIT == "BASELINE",
new_var = LESIONSBL,
analysis_var = LESIONID,
summary_fun = function(x) paste(x, collapse = ", ")
)
}
\seealso{
\code{\link[=derive_summary_records]{derive_summary_records()}}, \code{\link[=get_summary_records]{get_summary_records()}}
General Derivation Functions for all ADaMs that returns variable appended to dataset:
\code{\link{derive_var_confirmation_flag}()},
\code{\link{derive_var_extreme_flag}()},
\code{\link{derive_var_last_dose_amt}()},
\code{\link{derive_var_last_dose_date}()},
\code{\link{derive_var_last_dose_grp}()},
\code{\link{derive_var_merged_cat}()},
\code{\link{derive_var_merged_character}()},
\code{\link{derive_var_merged_exist_flag}()},
\code{\link{derive_var_obs_number}()},
\code{\link{derive_var_relative_flag}()},
\code{\link{derive_var_worst_flag}()},
\code{\link{derive_vars_joined}()},
\code{\link{derive_vars_last_dose}()},
\code{\link{derive_vars_merged_lookup}()},
\code{\link{derive_vars_merged}()},
\code{\link{derive_vars_transposed}()},
\code{\link{get_summary_records}()}
}
\author{
Stefan Bundfuss
}
\concept{der_gen}
\keyword{der_gen}