I am interested in multiplying subsets of two variables,
x in my dataset, but the two subsets are of different lengths so I can’t subset both before multiplying them. How can I filter the product based on the value of the original variables?
Here is a simplified data sample. I want to multiply
x, but keep only the products for which
Z is greater than the 50th percentile and for which
abs(x) is less than 100. My code below generates 10 values for each. There are 5 values for
Z > 50th percentile, but only 4 values for
abs(x) < 100.
## Create dataframe set.seed(47610) Z <- rnorm(10, mean = 5, sd = 1) x <- rnorm(10, mean = -101, sd = 3) df <- data.frame(cbind(Z, x)) ## Keep only Z above 50th percentile, multiply by x Z <- df %>% filter(Z > quantile(Z, 0.5)) %>% select(Z) Zx <- Z*df$x
Zx are both 5×1.
If I try to filter after obtaining
Zx through multiplication, I get the following error message telling me the dimensions are wrong:
Error: Problem with
..1must be of size 5 or 1, not size 10.
abs(df$x) < 100.
How can I achieve this? Thanks for the help.