library(tidyverse)
Use c() to make vectors of TRUE/FALSE (NOTE I think the code below would work the same if the values were 1, 0)
# low items
low1 <- c(T, T, T, T, F, F, T, F, T, F, T, T)
low2 <- c(T, F, T, T, T, T, F, T, T, T, T, T)
low3 <- c(F, T, T, T, F, T, T, F, F, T, T, T)
# column bind
low <- cbind(low1, low2, low3)
# med items
med1 <- c(T, T, F, F, F, T, F, F, F, F, F, F)
med2 <- c(T, F, T, T, T, F, F, T, F, F, F, F)
med3 <- c(T, F, T, F, T, T, F, T, F, T, F, T)
med4 <- c(T, F, T, F, F, T, F, F, T, F, F, T)
med5 <- c(T, F, T, T, T, F, F, T, F, F, F, F)
med6 <- c(F, F, F, F, F, F, F, F, F, F, F, F)
# column bind
med <- cbind(med1, med2, med3, med4, med5, med6)
#high items
high1 <- c(F, F, F, F, T, F, T, F, F, F, F, F)
high2 <- c(T, F, F, F, F, T, F, F, F, F, F, F)
# column bind
high <- cbind(high1, high2)
Bind low, med, high together and convert to a dataframe, add paperid.
all <- cbind(low, med, high) # this creates a "matrix", convert to dataframe
all<- as.data.frame(all)
# add paper id
all <- all %>%
mutate(paperid = row_number()) %>%
relocate(paperid, .before = low1)
glimpse(all)
## Rows: 12
## Columns: 12
## $ paperid <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
## $ low1 <lgl> TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE…
## $ low2 <lgl> TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, …
## $ low3 <lgl> FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE…
## $ med1 <lgl> TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FA…
## $ med2 <lgl> TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALS…
## $ med3 <lgl> TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE…
## $ med4 <lgl> TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FAL…
## $ med5 <lgl> TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALS…
## $ med6 <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,…
## $ high1 <lgl> FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, F…
## $ high2 <lgl> TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, F…
low items = 1 med items = 2 high items = 5
Pull wide data into two columns, one with the names of each item, and one with the T/F (yesno, 1,0) values in it.
all_long <- all %>%
pivot_longer(names_to = "item", values_to = "yesno", low1:high2)
glimpse(all_long)
## Rows: 132
## Columns: 3
## $ paperid <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,…
## $ item <chr> "low1", "low2", "low3", "med1", "med2", "med3", "med4", "med5"…
## $ yesno <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE,…
Use mutate to make a new column called score that gives 0 when the yes/no value is FALSE and scores of 1 for low items that are TRUE, 2 for med items that are TRUE, and 5 for high items that are TRUE.
all_scored <- all_long %>%
mutate(score = case_when(yesno == FALSE ~ 0,
item == "low1" & yesno == "TRUE" ~ 1,
item == "low2" & yesno == "TRUE" ~ 1,
item == "low3" & yesno == "TRUE" ~ 1,
item == "med1" & yesno == "TRUE" ~ 2,
item == "med2" & yesno == "TRUE" ~ 2,
item == "med3" & yesno == "TRUE" ~ 2,
item == "med4" & yesno == "TRUE" ~ 2,
item == "med5" & yesno == "TRUE" ~ 2,
item == "med6" & yesno == "TRUE" ~ 2,
item == "high1" & yesno == "TRUE" ~ 5,
item == "high2" & yesno == "TRUE" ~ 5))
glimpse(all_scored)
## Rows: 132
## Columns: 4
## $ paperid <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,…
## $ item <chr> "low1", "low2", "low3", "med1", "med2", "med3", "med4", "med5"…
## $ yesno <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE,…
## $ score <dbl> 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 5, 1, 0, 1, 2, 0, 0, 0, 0, 0, 0,…
Use group_by and summarise to add up the score for each paper individually. Add gt::gt() to get it to display in a nice table.
all_scored %>%
group_by(paperid) %>%
summarise(totalscore = sum(score)) %>%
gt::gt()
| paperid | totalscore |
|---|---|
| 1 | 17 |
| 2 | 4 |
| 3 | 11 |
| 4 | 7 |
| 5 | 12 |
| 6 | 13 |
| 7 | 7 |
| 8 | 7 |
| 9 | 4 |
| 10 | 4 |
| 11 | 3 |
| 12 | 7 |
med1X <- c(T, F, T, F, T, T, F, T, F, T, F, T)
med2X <- c("public dataset generated by authors", "Other (please specify)", "public dataset generated by authors", "Other (please specify)", "Not clear", "public dataset generated by authors", "Not clear", "public dataset generated by others", "Not clear", "Not clear", "public dataset generated by others", "Not clear")
med3X <- c(T, F, T, F, F, T, F, F, T, F, F, T)
med <- cbind(med1X, med2X, med3X)
med <- as.data.frame(med)
med <- med %>%
mutate(paperID = row_number())
med_long <- med %>%
pivot_longer(names_to = "item", values_to = "yesno", med1X:med3X)
glimpse(med_long)
## Rows: 36
## Columns: 3
## $ paperID <int> 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7,…
## $ item <chr> "med1X", "med2X", "med3X", "med1X", "med2X", "med3X", "med1X",…
## $ yesno <chr> "TRUE", "public dataset generated by authors", "TRUE", "FALSE"…
OK this is a more complicated case_when. If yes/no is FALSE then make the score 0, if the items is med1X (or med3X) and yesno is TRUE, make the score 2. For item med2X, if yesno == NOt clear, make the score 0. If yesno is an item in (ie. %in%) the list of “public dataset generated by authors”, “Other (please specify)”, “public dataset generated by others”, then the score should be 2.
medXscored <- med_long %>%
mutate(score = case_when(yesno == "FALSE" ~ 0,
item == "med1X" & yesno == "TRUE" ~ 2,
item == "med3X" & yesno == "TRUE" ~ 2,
item == "med2X" & yesno == "Not clear" ~ 0,
item == "med2X" & yesno %in% c("public dataset generated by authors", "Other (please specify)", "public dataset generated by others") ~ 2))
glimpse(medXscored)
## Rows: 36
## Columns: 4
## $ paperID <int> 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7,…
## $ item <chr> "med1X", "med2X", "med3X", "med1X", "med2X", "med3X", "med1X",…
## $ yesno <chr> "TRUE", "public dataset generated by authors", "TRUE", "FALSE"…
## $ score <dbl> 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 0, 0, 0,…
medXscored %>%
group_by(paperID) %>%
summarise(totalscore = sum(score)) %>%
gt::gt()
| paperID | totalscore |
|---|---|
| 1 | 6 |
| 2 | 2 |
| 3 | 6 |
| 4 | 2 |
| 5 | 2 |
| 6 | 6 |
| 7 | 0 |
| 8 | 4 |
| 9 | 2 |
| 10 | 2 |
| 11 | 2 |
| 12 | 4 |