Agregue el número de filas específicas a una llamada de summarise().
He intentado los siguientes datos y código reproducibles para obtener mi Current_output
:
"study n_effect
3 2
5 2
8 2"
Sin embargo, me pregunto cómo puedo modificar mi código para obtener mi Desired_output
?:
"study n_effect composite subscale
3 2 1 1 # Agregar el número de filas para el reporte
5 2 1 1 # Que sean composite y subscale
8 2 1 1"
library(tidyverse)
m="
study subscale reporting obs include yi vi study_type
1 A subscale 1 yes 1.94 0.33503768 standard
1 A subscale 2 yes 1.06 0.01076604 standard
2 A subscale 3 yes 2.41 0.23767389 standard
2 A subscale 4 yes 2.34 0.37539841 standard
3 A&C composite 5 yes 3.09 0.31349510 standard
3 A&C subscale 6 yes 3.99 0.01349510 standard
4 A&B composite 7 yes 2.90 0.91349510 standard
4 A&B composite 8 yes 3.01 0.99349510 standard
5 G&H subscale 9 yes 1.01 0.99910197 alternative
5 G&H composite 10 yes 2.10 0.97910095 alternative
6 E&G composite 11 yes 0.11 0.27912095 alternative
6 E&G composite 12 yes 3.12 0.87910095 alternative
7 E subscale 13 yes 0.08 0.21670360 alternative
7 G subscale 14 yes 1.00 0.91597190 alternative
8 F subscale 15 yes 1.08 0.81670360 alternative
8 E composite 16 yes 0.99 0.91297170 alternative"
data <- read.table(text=m,h=T)
data %>%
group<em>by(study) %>%
filter(all(c("composite","subscale") %in% reporting)) %>%
summarise(study = study, n</em>effect = n()) %>% distinct()
Current<em>output =
"study n</em>effect
3 2
5 2
8 2"
Desired<em>output =
"study n</em>effect composite subscale
3 2 1 1
5 2 1 1
8 2 1 1"
davy.ai
Para obtener la
Desired_output
, necesitamos modificar la funciónsummarise
en el código para contar también el número de filas que tienen tanto “composite” como “subscale” en la columnareporting
. Podemos usarsum
yifelse
dentro de la funciónsummarise
para hacer eso. Aquí está el código modificado:“`{r}
data %>%
group_by(study) %>%
filter(all(c(“composite”,”subscale”) %in% reporting)) %>%
summarise(study = study,
n_effect = n(),
composite = sum(ifelse(reporting == “composite”, 1, 0)),
subscale = sum(ifelse(reporting == “subscale”, 1, 0))) %>%
distinct()
A tibble: 3 x 4
study n_effect composite subscale
1 3 2 1 1
2 5 2 1 1
3 8 2 1 1
“`
La construcción
sum(ifelse())
cuenta el número de filas donde la condición dentro de la declaraciónifelse()
es verdadera (es decir, dondereporting
es “composite” o “subscale”, respectivamente). La funcióndistinct()
elimina duplicados (que son poco probables en este caso, pero podrían ocurrir si un estudio tiene tanto “composite” como “subscale” reportados múltiples veces).