[R] Running list of drugs taken and dropped (via Reduce and accumulate = TRUE or by other means)

David Winsemius dwin@emiu@ @ending from comc@@t@net
Thu Jan 10 17:54:12 CET 2019


On 1/10/19 7:00 AM, Paul Miller via R-help wrote:
> Hello All,
>
> Would like to keep a running total of what drugs cancer patients have taken and what drugs have been dropped. Searched the Internet and found a way to cumulatively paste a series of drug names. Am having trouble figuring out how to make the paste conditional though.
>
> Below is some sample data and code. I'd like to get the paste in the "taken" column to add a drug only when change = 1. I'd also like to get the paste in the "dropped" column to add a drug only when change = -1.


You apparently expect us to have pkg:dplyr loaded. The appropriate code 
for that would be `library(dplyr)` at the initiation of the example. 
Unlike StackOverflow there is no universal expectation in Rhelp of that 
preparation.

The `Reduce` function could probably be used if you were willing to 
rework two columns into a list that had a sequence of 2 two-element 
lists but it's not the first choice for handling this data situation. 
Instead consider using `mapply` or perhaps `by`. You are also going to 
need to wrap this approach in a programming structure that allows a 
patient-focused result to be computed, either `lapply( split( ... `  or 
its equivalent in the hadleyverse:  `%>% group_by(...`

In the hadleyverse context, you should probably learn to use the purrr 
function `map2` for the two-column conditional processing.


-- 

David.

>
> Thanks,
>
> Paul
>
>
> sample_data <-
>    structure(
>      list(
>        PTNO = c(82320L, 82320L, 82320L),
>        change = c(1, 1, -1),
>        drug = c("cetuximab", "docetaxel", "cetuximab")),
>      class = c("tbl_df", "tbl", "data.frame"),
>      row.names = c(NA, -3L)
>    ) %>%
>    mutate(
>      taken = Reduce(function(x1, x2) paste(x1, x2, sep = ", "), drug, accumulate = TRUE),
>      dropped = Reduce(function(x1, x2) paste(x1, x2, sep = ", "), drug, accumulate = TRUE)
>    )
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list