У меня есть 400 строк с несколькими столбцами, последние пять из которых: a, b, c, d, e
. Для каждой строки я хочу случайным образом выбрать три из вышеперечисленных 5 переменных и выполните rowmeans (varx, var, varz) для создания столбца trio_average, а две другие создайте pair_average.
Например, одна строка может быть средним значением b, d, e для столбца "trio_average" и среднее значение a, c для «pair_average», а следующим может быть среднее значение a, c, e и b, d.
Я сделал это довольно окольным путем ... Я использовал "randomizr ()", чтобы сгенерировать переменную с именем "trio_set" с 400 случайными (условно случайными, чтобы все они были равными) tr ios из 5 переменных. Есть 10 возможных комбинаций из 5 переменных, поэтому у меня есть 40, каждая из которых, например, "a_c_e", "b_c_d" et c.
Затем я использовал последовательность из 10 операторов if_else:
data <- transform(data, trio_average = ifelse(trio_set = "a_b_c", rowMeans(data[c("a","b","c")]),
ifelse(trio_set = "a_b_d", rowMeans(data[c("a","b","d")]), ....
Затем я бы сделал это еще 10 раз для пар.
Это действительно делает работу, но в действительности мои имена столбцов намного длиннее, например, "a", поэтому мой код в конце довольно плохо выглядит и неэффективно. Есть ли лучший способ сделать это?