Я нашел отличное решение для моей проблемы, где я хочу создать новый столбец, который вычисляет среднее значение всех ячеек в соответствующей строке:
{ ссылка }
Данные по общему признанию не аккуратны, но решение, которое я скопировал ниже, выполняет свою работу:
data %>%
rowwise() %>%
mutate(c=mean(c(a,b)))
# id a b c
# (dbl) (dbl) (dbl) (dbl)
# 1 101 1 2 1.5
# 2 102 2 2 2.0
# 3 103 3 2 2.5
Однако, в отличие от этого более простого примера, я слишком много столбцов, чтобы назвать. Мне интересно, есть ли какой-нибудь способ быстрой ссылки на столбцы, используя разделительную нотацию (то есть вместо c (a, b), что-то вроде 2: 3) или какой-либо другой способ ссылки на столбцы через их индекс.
Я нашел нечто похожее в другом потоке переполнения стека здесь , но у решения есть свои проблемы, поскольку мы перечисляем все индексы столбцов вместо имен столбцов. У меня слишком много столбцов, чтобы перечислить их все для каждого расчета.
Есть какие-нибудь решения?
РЕДАКТИРОВАТЬ: Я сам понял это, но мне кажется, что это слишком не элегантно, и я полагаю, что, возможно, извлекаю весь столбец для каждой строки что, очевидно, будет более медленным решением, чем ожидалось:
data %>%
mutate(id = row_number()) %>%
rowwise() %>%
mutate(avg = mean(c(.[id, 2:4], recursive=TRUE)))
Какие решения быстрее?