Необходимо отслеживать, какие пациенты химиотерапии принимают, принимали и бросают. Помогает с проверкой правильности кодирования схем химиотерапии.
Ниже приведены некоторые примеры данных. Набор данных «есть», который показывает, что у меня есть, и набор данных «нужны», который показывает, чего я пытаюсь достичь. Идея заключается в том, что названия лекарств будут добавляться / удаляться из рабочего списка на основе значения переменной изменения. Например, с помощью переменной «on» названия лекарств будут добавлены в текущий список при изменении = 1 и удалены из рабочего списка при изменении = -1.
Я думал, что это можно сделать с помощью функции накопления из пакета мурлыкания или уменьшения (накопления = ИСТИНА). Насколько я понимаю, эти функции сократят длинный список до более короткого путем повторного применения функции, которая сводит пару значений к одному значению.
Я пытался включить такие функции, как paste или str_remove (из пакета stringr) в накопление / уменьшение, и это прекрасно работает. Проблема в том, что в зависимости от значения изменения, иногда я хочу вставить, а иногда я хочу str_remove, а иногда я хочу оставить список как есть. Я пытался написать функцию, которая применяет различные функции в зависимости от значения изменения, но это не очень хорошо.
Как я могу заставить R делать то, что мне нужно?
Спасибо
Пол
#### Have data ####
have <- structure(
list(
PTNO = structure(
c(86319, 86319, 86319, 86319,
86319, 86319, 86319, 86319),
format.sas = "BEST"
),
line = c(1, 1, 1, 1, 1, 1, 1, 1),
change = c(1, 1,-1,-1, 1, 1,-1,-1),
date = structure(
c(16751, 16751, 16764, 16764, 16815, 16815,
16836, 16836),
class = "Date",
format.sas = "MMDDYY"
),
drug = c(
"carboplatin",
"cetuximab",
"carboplatin",
"cetuximab",
"carboplatin",
"cetuximab",
"carboplatin",
"cetuximab"
)
),
class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA,-8L))
#### Need data ####
need <- structure(
list(
PTNO = structure(
c(86319, 86319, 86319, 86319,
86319, 86319, 86319, 86319),
format.sas = "BEST"
),
line = c(1, 1, 1, 1, 1, 1, 1, 1),
change = c(1, 1,-1,-1, 1, 1,-1,-1),
date = structure(
c(16751, 16751, 16764, 16764, 16815, 16815, 16836, 16836),
class = "Date",
format.sas = "MMDDYY"
),
drug = c(
"carboplatin",
"cetuximab",
"carboplatin",
"cetuximab",
"carboplatin",
"cetuximab",
"carboplatin",
"cetuximab"
),
on = c(
"carboplatin",
"carboplatin, cetuximab",
"cetuximab",
"",
"carboplatin",
"carboplatin, cetuximab",
"cetuximab",
""
),
taken = c(
"carboplatin",
"carboplatin, cetuximab",
"carboplatin, cetuximab",
"carboplatin, cetuximab",
"carboplatin, cetuximab, carboplatin",
"carboplatin, cetuximab, carboplatin, cetuximab",
"carboplatin, cetuximab, carboplatin, cetuximab",
"carboplatin, cetuximab, carboplatin, cetuximab"
),
dropped = c(
"",
"",
"carboplatin",
"carboplatin, cetuximab",
"carboplatin, cetuximab",
"carboplatin, cetuximab",
"carboplatin, cetuximab, carboplatin",
"carboplatin, cetuximab, carboplatin, cetuximab"
)
),
row.names = c(NA,-8L),
class = c("tbl_df", "tbl", "data.frame"))