Online training class for Clinical R programming batch starts on Monday, 02Feb2026.
Click here for details.
#==============================================================================;
#Retain first score;
#==============================================================================;
fs <- tribble(
~usubjid,~visitnum,~score,
101,1,20,
101,2,10,
101,3,30,
102,1,90,
102,2,10,
102,3,100
)
fs01 <- fs %>%
arrange(usubjid,visitnum) %>%
group_by(usubjid) %>%
mutate(
seq = row_number(),
first_score = if_else(seq==1,score,NA)
) %>%
fill(first_score,.direction="down") fs <- data.frame(
usubjid = c(101, 101, 101, 102, 102, 102),
visitnum = c(1, 2, 3, 1, 2, 3),
score = c(20, 10, 30, 90, 10, 100)
, stringsAsFactors = FALSE
)
fs01 <- fs[order(fs$usubjid, fs$visitnum), ]
fs01$first_score <- ave(fs01$score, fs01$usubjid, FUN = function(x) x[1])