My data.table has many columns in groups of four.  On each group, I want
to perform the same set of calculations.

mydt <- data.table(
date = seq(as.IDate("2025-06-01"), by = 1, length.out = 10),
ABC1_price = runif(10, 100, 120), ABC1_volume = runif(10, 200, 300),
ABC2_price = runif(10, 100, 120), ABC2_volume = runif(10, 200, 300),
DEF1_price = runif(10, 100, 120), DEF1_volume = runif(10, 200, 300),
DEF2_price = runif(10, 100, 120), DEF2_volume = runif(10, 200, 300))

mydt[
, let(ABC_price = fifelse(ABC1_volume < ABC2_volume, ABC2_price,
ABC1_price),
DEF_price = fifelse(DEF1_volume < DEF2_volume, DEF2_price, DEF1_price))
]

# Now use mydt[, list(ABC_price, DEF_price)] for subsequent calculations

With many columns, above method is error-prone and tedious.  Is it
possible to do something like:

myvars <- c("ABC", "DEF")
for (avar in myvars) {
# code for above calculations
}

Thanks,
Naresh

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to