我的问题是this question的扩展名。我想弄清楚如何使用具有多列的dplyr而不是单个变量来划分行组。
我有这个数据框:
jQuery(function () {
var $els = $('div[id^=quote]'),
i = 0,
len = $els.length;
$els.slice(1).hide();
setInterval(function () {
$els.eq(i).fadeOut(function () {
i = (i + 1) % len
$els.eq(i).fadeIn();
})
}, 4000)
})
我想按名称分组,并将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"
史蒂文·博普雷(StevenBeaupré)在最原始的问题中只有一个变量是最令人讨厌的答案:
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
但是该答案是针对单值情况的,我不知道如何扩展到“ summarise_at”和“ summarise_all”。我尝试使用“点”,但无法找出正确的语法。
答案 0 :(得分:1)
我想出了一种方法。
x %>% gather(variable, value, -(name:condition)) %>%
group_by(variable,name) %>%
summarise(value = value[condition == "B"] / value[condition == "A"]) %>%
spread(variable,value)
# name value1 value2
# <fct> <dbl> <dbl>
# 1 a 5 5
# 2 b 5 5
# 3 c 5 5
# 4 d 5 5
答案 1 :(得分:0)
我不确定是否可以自动将此功能扩展到每个变量。我认为您需要为每种情况指定摘要功能。
x %>%
group_by(name) %>%
summarise(value1 = value1[condition == "B"] / value1[condition == "A"],
value2 = value2[condition == "B"] / value2[condition == "A"])
# name value1 value2
# <fct> <dbl> <dbl>
# 1 a 5 5
# 2 b 5 5
# 3 c 5 5
# 4 d 5 5