Мой вопрос является расширением этого вопроса . Я хочу выяснить, как разделить группы строк, используя dplyr с несколькими столбцами, а не для одной переменной.
У меня есть этот фрейм данных:
x <- data.frame(
name = rep(letters[1:4], each = 2),
condition = rep(c("A", "B"), times = 4),
value1 = c(2,10,4,20,8,40,20,100),
value2 = c(2,10,4,20,8,40,20,100)
)
# name condition value1 value2
# 1 a A 2 2
# 2 a B 10 10
# 3 b A 4 4
# 4 b B 20 20
# 5 c A 8 8
# 6 c B 40 40
# 7 d A 20 20
# 8 d B 100 100
Я хочу сгруппировать по имени и разделить значения строк с condition == "B"
на строки с condition == "A"
, чтобы получить это:
data.frame(
name = letters[1:4],
value1 = c(5,5,5,5),
value2 = c(5,5,5,5)
)
# name value1 value2
# 1 a 5 5
# 2 b 5 5
# 3 c 5 5
# 4 d 5 5
Стивен Бопре получил наиболее одобренный ответ на оригинальный вопрос с одной переменной:
x %>%
group_by(name) %>%
summarise(value = value[condition == "B"] / value[condition == "A"])
Но этот ответ для случая с одним значением, я не знаю, как расширить до "summarise_at" и "summarise_all". Я пытался использовать «точку», но не могу понять правильный синтаксис.