Hello,
I have columns a,b,c,x,y,z and would like to create new columns by multiplying ax, by and c*z
library(tidyverse)
(mytable <- data.frame(
a=1:2,
b=2:3,
c=3:4,
x=5:6,
y=7:8,
z=9:10
))
How would I go about this in R?
thank you
Leon
2
Try this:
mytable |>
as_tibble() |>
mutate(ax = a*x,
by = b*y,
cz = c*z)
1 Like
thanks....how about if i want to do it for very many column pairs i.e 30, is there an easier way to handle it
library(tidyverse)
library(rlang)
(mytable <- data.frame(
a=1:2,
b=2:3,
c=3:4,
x=5:6,
y=7:8,
z=9:10
))
ncm <- ncol(mytable)
(first_cols <- seq_len(ncm/2))
(second_cols <- setdiff(seq_len(ncm),first_cols))
first_half_names <- names(mytable)[first_cols]
second_half_names <- names(mytable)[second_cols]
(step_1 <- map2(first_half_names,
second_half_names,
\(x,y) paste0(x,"*",y) ))
(step_2 <- map2(first_half_names,
second_half_names,
\(x,y) paste0(x,y) ))
(step_3 <- rlang::parse_exprs(paste0(step_1,collapse=";")))
names(step_3) <- step_2
step_3
mutate(mytable,
!!!(step_3))
system
Closed
5
This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.
If you have a query related to it or one of the replies, start a new topic and refer back with a link.