to.long.Rd
Function to convert summary data in vector format to the corresponding long format.
to.long(measure, ai, bi, ci, di, n1i, n2i, x1i, x2i, t1i, t2i,
m1i, m2i, sd1i, sd2i, xi, mi, ri, ti, sdi, ni, data, slab, subset,
add=1/2, to="none", drop00=FALSE, vlong=FALSE, append=TRUE, var.names)
a character string to specify the effect size or outcome measure corresponding to the summary data supplied. See ‘Details’ and the documentation of the escalc
function for possible options.
vector with the \(2 \times 2\) table frequencies (upper left cell).
vector with the \(2 \times 2\) table frequencies (upper right cell).
vector with the \(2 \times 2\) table frequencies (lower left cell).
vector with the \(2 \times 2\) table frequencies (lower right cell).
vector with the group sizes or row totals (first group/row).
vector with the group sizes or row totals (second group/row).
vector with the number of events (first group).
vector with the number of events (second group).
vector with the total person-times (first group).
vector with the total person-times (second group).
vector with the means (first group or time point).
vector with the means (second group or time point).
vector with the standard deviations (first group or time point).
vector with the standard deviations (second group or time point).
vector with the frequencies of the event of interest.
vector with the frequencies of the complement of the event of interest or the group means.
vector with the raw correlation coefficients.
vector with the total person-times.
vector with the standard deviations.
vector with the sample/group sizes.
optional data frame containing the variables given to the arguments above.
optional vector with labels for the studies.
optional (logical or numeric) vector to specify the subset of studies that should included in the data frame returned by the function.
see the documentation of the escalc
function.
see the documentation of the escalc
function.
see the documentation of the escalc
function.
optional logical whether a very long format should be used (only relevant for \(2 \times 2\) or \(1 \times 2\) table data).
logical to specify whether the data frame specified via the data
argument (if one has been specified) should be returned together with the long format data (the default is TRUE
). Can also be a character or numeric vector to specify which variables from data
to append.
optional character vector with variable names (the length depends on the data type). If unspecified, the function sets appropriate variable names by default.
The escalc
function describes a wide variety of effect sizes or outcome measures that can be computed for a meta-analysis. The summary data used to compute those measures are typically contained in vectors, each element corresponding to a study. The to.long
function takes this information and constructs a long format dataset from these data.
For example, in various fields (such as the health and medical sciences), the response variable measured is often dichotomous (binary), so that the data from a study comparing two different groups can be expressed in terms of a \(2 \times 2\) table, such as:
outcome 1 | outcome 2 | total | ||||
group 1 | ai | bi | n1i | |||
group 2 | ci | di | n2i |
where ai
, bi
, ci
, and di
denote the cell frequencies (i.e., the number of individuals falling into a particular category) and n1i
and n2i
the row totals (i.e., the group sizes).
The cell frequencies in \(k\) such \(2 \times 2\) tables can be specified via the ai
, bi
, ci
, and di
arguments (or alternatively, via the ai
, ci
, n1i
, and n2i
arguments). The function then creates the corresponding long format dataset. The measure
argument should then be set equal to one of the outcome measures that can be computed based on this type of data, such as "RR"
, "OR"
, "RD"
(it is not relevant which specific measure is chosen, as long as it corresponds to the specified summary data). See the documentation of the escalc
function for more details on the types of data formats available.
The long format for data of this type consists of two rows per study, a factor indicating the study (default name study
), a dummy variable indicating the group (default name group
, coded as 1 and 2), and two variables indicating the number of individuals experiencing outcome 1 or outcome 2 (default names out1
and out2
). Alternatively, if vlong=TRUE
, then the long format consists of four rows per study, a factor indicating the study (default name study
), a dummy variable indicating the group (default name group
, coded as 1 and 2), a dummy variable indicating the outcome (default name outcome
, coded as 1 and 2), and a variable indicating the frequency of the respective outcome (default name freq
).
The default variable names can be changed via the var.names
argument (must be of the appropriate length, depending on the data type).
The examples below illustrate the use of this function.
A data frame with either \(k\), \(2 \times k\), or \(4 \times k\) rows and an appropriate number of columns (depending on the data type) with the data in long format. If append=TRUE
and a data frame was specified via the data
argument, then the data in long format are appended to the original data frame (with rows repeated an appropriate number of times).
Viechtbauer, W. (2010). Conducting meta-analyses in R with the metafor package. Journal of Statistical Software, 36(3), 1–48. https://doi.org/10.18637/jss.v036.i03
### convert data to long format
dat.bcg
#> trial author year tpos tneg cpos cneg ablat alloc
#> 1 1 Aronson 1948 4 119 11 128 44 random
#> 2 2 Ferguson & Simes 1949 6 300 29 274 55 random
#> 3 3 Rosenthal et al 1960 3 228 11 209 42 random
#> 4 4 Hart & Sutherland 1977 62 13536 248 12619 52 random
#> 5 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate
#> 6 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate
#> 7 7 Vandiviere et al 1973 8 2537 10 619 19 random
#> 8 8 TPT Madras 1980 505 87886 499 87892 13 random
#> 9 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random
#> 10 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic
#> 11 11 Comstock et al 1974 186 50448 141 27197 18 systematic
#> 12 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic
#> 13 13 Comstock et al 1976 27 16886 29 17825 33 systematic
dat.long <- to.long(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
dat.long
#> trial author year tpos tneg cpos cneg ablat alloc study group out1 out2
#> 1 1 Aronson 1948 4 119 11 128 44 random 1 1 4 119
#> 2 1 Aronson 1948 4 119 11 128 44 random 1 2 11 128
#> 3 2 Ferguson & Simes 1949 6 300 29 274 55 random 2 1 6 300
#> 4 2 Ferguson & Simes 1949 6 300 29 274 55 random 2 2 29 274
#> 5 3 Rosenthal et al 1960 3 228 11 209 42 random 3 1 3 228
#> 6 3 Rosenthal et al 1960 3 228 11 209 42 random 3 2 11 209
#> 7 4 Hart & Sutherland 1977 62 13536 248 12619 52 random 4 1 62 13536
#> 8 4 Hart & Sutherland 1977 62 13536 248 12619 52 random 4 2 248 12619
#> 9 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate 5 1 33 5036
#> 10 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate 5 2 47 5761
#> 11 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate 6 1 180 1361
#> 12 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate 6 2 372 1079
#> 13 7 Vandiviere et al 1973 8 2537 10 619 19 random 7 1 8 2537
#> 14 7 Vandiviere et al 1973 8 2537 10 619 19 random 7 2 10 619
#> 15 8 TPT Madras 1980 505 87886 499 87892 13 random 8 1 505 87886
#> 16 8 TPT Madras 1980 505 87886 499 87892 13 random 8 2 499 87892
#> 17 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random 9 1 29 7470
#> 18 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random 9 2 45 7232
#> 19 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic 10 1 17 1699
#> 20 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic 10 2 65 1600
#> 21 11 Comstock et al 1974 186 50448 141 27197 18 systematic 11 1 186 50448
#> 22 11 Comstock et al 1974 186 50448 141 27197 18 systematic 11 2 141 27197
#> 23 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic 12 1 5 2493
#> 24 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic 12 2 3 2338
#> 25 13 Comstock et al 1976 27 16886 29 17825 33 systematic 13 1 27 16886
#> 26 13 Comstock et al 1976 27 16886 29 17825 33 systematic 13 2 29 17825
### extra long format
dat <- to.long(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg, vlong=TRUE)
dat
#> trial author year tpos tneg cpos cneg ablat alloc study group outcome freq
#> 1 1 Aronson 1948 4 119 11 128 44 random 1 1 1 4
#> 2 1 Aronson 1948 4 119 11 128 44 random 1 1 2 119
#> 3 1 Aronson 1948 4 119 11 128 44 random 1 2 1 11
#> 4 1 Aronson 1948 4 119 11 128 44 random 1 2 2 128
#> 5 2 Ferguson & Simes 1949 6 300 29 274 55 random 2 1 1 6
#> 6 2 Ferguson & Simes 1949 6 300 29 274 55 random 2 1 2 300
#> 7 2 Ferguson & Simes 1949 6 300 29 274 55 random 2 2 1 29
#> 8 2 Ferguson & Simes 1949 6 300 29 274 55 random 2 2 2 274
#> 9 3 Rosenthal et al 1960 3 228 11 209 42 random 3 1 1 3
#> 10 3 Rosenthal et al 1960 3 228 11 209 42 random 3 1 2 228
#> 11 3 Rosenthal et al 1960 3 228 11 209 42 random 3 2 1 11
#> 12 3 Rosenthal et al 1960 3 228 11 209 42 random 3 2 2 209
#> 13 4 Hart & Sutherland 1977 62 13536 248 12619 52 random 4 1 1 62
#> 14 4 Hart & Sutherland 1977 62 13536 248 12619 52 random 4 1 2 13536
#> 15 4 Hart & Sutherland 1977 62 13536 248 12619 52 random 4 2 1 248
#> 16 4 Hart & Sutherland 1977 62 13536 248 12619 52 random 4 2 2 12619
#> 17 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate 5 1 1 33
#> 18 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate 5 1 2 5036
#> 19 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate 5 2 1 47
#> 20 5 Frimodt-Moller et al 1973 33 5036 47 5761 13 alternate 5 2 2 5761
#> 21 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate 6 1 1 180
#> 22 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate 6 1 2 1361
#> 23 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate 6 2 1 372
#> 24 6 Stein & Aronson 1953 180 1361 372 1079 44 alternate 6 2 2 1079
#> 25 7 Vandiviere et al 1973 8 2537 10 619 19 random 7 1 1 8
#> 26 7 Vandiviere et al 1973 8 2537 10 619 19 random 7 1 2 2537
#> 27 7 Vandiviere et al 1973 8 2537 10 619 19 random 7 2 1 10
#> 28 7 Vandiviere et al 1973 8 2537 10 619 19 random 7 2 2 619
#> 29 8 TPT Madras 1980 505 87886 499 87892 13 random 8 1 1 505
#> 30 8 TPT Madras 1980 505 87886 499 87892 13 random 8 1 2 87886
#> 31 8 TPT Madras 1980 505 87886 499 87892 13 random 8 2 1 499
#> 32 8 TPT Madras 1980 505 87886 499 87892 13 random 8 2 2 87892
#> 33 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random 9 1 1 29
#> 34 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random 9 1 2 7470
#> 35 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random 9 2 1 45
#> 36 9 Coetzee & Berjak 1968 29 7470 45 7232 27 random 9 2 2 7232
#> 37 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic 10 1 1 17
#> 38 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic 10 1 2 1699
#> 39 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic 10 2 1 65
#> 40 10 Rosenthal et al 1961 17 1699 65 1600 42 systematic 10 2 2 1600
#> 41 11 Comstock et al 1974 186 50448 141 27197 18 systematic 11 1 1 186
#> 42 11 Comstock et al 1974 186 50448 141 27197 18 systematic 11 1 2 50448
#> 43 11 Comstock et al 1974 186 50448 141 27197 18 systematic 11 2 1 141
#> 44 11 Comstock et al 1974 186 50448 141 27197 18 systematic 11 2 2 27197
#> 45 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic 12 1 1 5
#> 46 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic 12 1 2 2493
#> 47 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic 12 2 1 3
#> 48 12 Comstock & Webster 1969 5 2493 3 2338 33 systematic 12 2 2 2338
#> 49 13 Comstock et al 1976 27 16886 29 17825 33 systematic 13 1 1 27
#> 50 13 Comstock et al 1976 27 16886 29 17825 33 systematic 13 1 2 16886
#> 51 13 Comstock et al 1976 27 16886 29 17825 33 systematic 13 2 1 29
#> 52 13 Comstock et al 1976 27 16886 29 17825 33 systematic 13 2 2 17825
### select variables to append
dat.long <- to.long(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg,
data=dat.bcg, append=c("author","year"))
dat.long
#> author year study group out1 out2
#> 1 Aronson 1948 1 1 4 119
#> 2 Aronson 1948 1 2 11 128
#> 3 Ferguson & Simes 1949 2 1 6 300
#> 4 Ferguson & Simes 1949 2 2 29 274
#> 5 Rosenthal et al 1960 3 1 3 228
#> 6 Rosenthal et al 1960 3 2 11 209
#> 7 Hart & Sutherland 1977 4 1 62 13536
#> 8 Hart & Sutherland 1977 4 2 248 12619
#> 9 Frimodt-Moller et al 1973 5 1 33 5036
#> 10 Frimodt-Moller et al 1973 5 2 47 5761
#> 11 Stein & Aronson 1953 6 1 180 1361
#> 12 Stein & Aronson 1953 6 2 372 1079
#> 13 Vandiviere et al 1973 7 1 8 2537
#> 14 Vandiviere et al 1973 7 2 10 619
#> 15 TPT Madras 1980 8 1 505 87886
#> 16 TPT Madras 1980 8 2 499 87892
#> 17 Coetzee & Berjak 1968 9 1 29 7470
#> 18 Coetzee & Berjak 1968 9 2 45 7232
#> 19 Rosenthal et al 1961 10 1 17 1699
#> 20 Rosenthal et al 1961 10 2 65 1600
#> 21 Comstock et al 1974 11 1 186 50448
#> 22 Comstock et al 1974 11 2 141 27197
#> 23 Comstock & Webster 1969 12 1 5 2493
#> 24 Comstock & Webster 1969 12 2 3 2338
#> 25 Comstock et al 1976 13 1 27 16886
#> 26 Comstock et al 1976 13 2 29 17825
dat.long <- to.long(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg,
data=dat.bcg, append=2:3)
dat.long
#> author year study group out1 out2
#> 1 Aronson 1948 1 1 4 119
#> 2 Aronson 1948 1 2 11 128
#> 3 Ferguson & Simes 1949 2 1 6 300
#> 4 Ferguson & Simes 1949 2 2 29 274
#> 5 Rosenthal et al 1960 3 1 3 228
#> 6 Rosenthal et al 1960 3 2 11 209
#> 7 Hart & Sutherland 1977 4 1 62 13536
#> 8 Hart & Sutherland 1977 4 2 248 12619
#> 9 Frimodt-Moller et al 1973 5 1 33 5036
#> 10 Frimodt-Moller et al 1973 5 2 47 5761
#> 11 Stein & Aronson 1953 6 1 180 1361
#> 12 Stein & Aronson 1953 6 2 372 1079
#> 13 Vandiviere et al 1973 7 1 8 2537
#> 14 Vandiviere et al 1973 7 2 10 619
#> 15 TPT Madras 1980 8 1 505 87886
#> 16 TPT Madras 1980 8 2 499 87892
#> 17 Coetzee & Berjak 1968 9 1 29 7470
#> 18 Coetzee & Berjak 1968 9 2 45 7232
#> 19 Rosenthal et al 1961 10 1 17 1699
#> 20 Rosenthal et al 1961 10 2 65 1600
#> 21 Comstock et al 1974 11 1 186 50448
#> 22 Comstock et al 1974 11 2 141 27197
#> 23 Comstock & Webster 1969 12 1 5 2493
#> 24 Comstock & Webster 1969 12 2 3 2338
#> 25 Comstock et al 1976 13 1 27 16886
#> 26 Comstock et al 1976 13 2 29 17825
### convert data to long format
dat.long <- to.long(measure="IRR", x1i=x1i, x2i=x2i, t1i=t1i, t2i=t2i,
data=dat.hart1999, var.names=c("id", "group", "events", "ptime"))
dat.long
#> trial study year x1i n1i t1i x2i n2i t2i compgrp prevtype trinr id group events ptime
#> 1 1 AFASAK 1989 9 335 413 19 336 398 placebo primary 2.8-4.2 1 1 9 413
#> 2 1 AFASAK 1989 9 335 413 19 336 398 placebo primary 2.8-4.2 1 2 19 398
#> 3 2 SPAF 1991 8 210 263 19 211 245 placebo primary 2.0-4.5 2 1 8 263
#> 4 2 SPAF 1991 8 210 263 19 211 245 placebo primary 2.0-4.5 2 2 19 245
#> 5 3 BAATAF 1990 3 212 487 13 208 435 control primary 1.5-2.7 3 1 3 487
#> 6 3 BAATAF 1990 3 212 487 13 208 435 control primary 1.5-2.7 3 2 13 435
#> 7 4 CAFA 1991 6 187 237 9 191 241 placebo primary 2.0-3.0 4 1 6 237
#> 8 4 CAFA 1991 6 187 237 9 191 241 placebo primary 2.0-3.0 4 2 9 241
#> 9 5 SPINAF 1992 7 281 489 23 290 483 placebo primary 1.4-2.8 5 1 7 489
#> 10 5 SPINAF 1992 7 281 489 23 290 483 placebo primary 1.4-2.8 5 2 23 483
#> 11 6 EAFT 1993 20 225 507 50 214 405 placebo secondary 2.5-4.0 6 1 20 507
#> 12 6 EAFT 1993 20 225 507 50 214 405 placebo secondary 2.5-4.0 6 2 50 405
### convert data to long format
dat.long <- to.long(measure="MD", m1i=m1i, sd1i=sd1i, n1i=n1i,
m2i=m2i, sd2i=sd2i, n2i=n2i, data=dat.normand1999,
var.names=c("id", "group", "mean", "sd", "n"))
dat.long
#> study source n1i m1i sd1i n2i m2i sd2i id group mean sd n
#> 1 1 Edinburgh 155 55 47 156 75 64 1 1 55 47 155
#> 2 1 Edinburgh 155 55 47 156 75 64 1 2 75 64 156
#> 3 2 Orpington-Mild 31 27 7 32 29 4 2 1 27 7 31
#> 4 2 Orpington-Mild 31 27 7 32 29 4 2 2 29 4 32
#> 5 3 Orpington-Moderate 75 64 17 71 119 29 3 1 64 17 75
#> 6 3 Orpington-Moderate 75 64 17 71 119 29 3 2 119 29 71
#> 7 4 Orpington-Severe 18 66 20 18 137 48 4 1 66 20 18
#> 8 4 Orpington-Severe 18 66 20 18 137 48 4 2 137 48 18
#> 9 5 Montreal-Home 8 14 8 13 18 11 5 1 14 8 8
#> 10 5 Montreal-Home 8 14 8 13 18 11 5 2 18 11 13
#> 11 6 Montreal-Transfer 57 19 7 52 18 4 6 1 19 7 57
#> 12 6 Montreal-Transfer 57 19 7 52 18 4 6 2 18 4 52
#> 13 7 Newcastle 34 52 45 33 41 34 7 1 52 45 34
#> 14 7 Newcastle 34 52 45 33 41 34 7 2 41 34 33
#> 15 8 Umea 110 21 16 183 31 27 8 1 21 16 110
#> 16 8 Umea 110 21 16 183 31 27 8 2 31 27 183
#> 17 9 Uppsala 60 30 27 52 23 20 9 1 30 27 60
#> 18 9 Uppsala 60 30 27 52 23 20 9 2 23 20 52