如何使用具有多个列的dplyr在多组行之间进行划分?
我的问题是这个问题的延伸。我想弄清楚如何使用具有多个列的dplyr来划分行组,而不是使用单个变量 我有这个数据框:如何使用具有多个列的dplyr在多组行之间进行划分?,r,dplyr,R,Dplyr,我的问题是这个问题的延伸。我想弄清楚如何使用具有多个列的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) ) # nam
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
史蒂文·博普雷(Steven Beaupré)对原始问题的答案是最多的,只有一个变量:
x %>%
group_by(name) %>%
summarise(value = value[condition == "B"] / value[condition == "A"])
但这个答案是针对单值情况的,我不知道如何扩展到“汇总在”和“汇总所有”。我试着用“点”,但不能找出正确的语法 我不确定是否有办法将此函数自动扩展到每个变量。我认为您需要为每个值案例指定summary函数
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
x%>%
分组单位(名称)%>%
总结(value1=value1[条件==“B”]/value1[条件==“A”],
value2=value2[条件==“B”]/value2[条件==“A”])
#名称值1值2
#
#1 a 5 5
#2 b 5 5
#3 c 5
#4 d 5 5
我想出了一个办法
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
x%>%gather(变量,值,-(名称:条件))%>%
分组依据(变量、名称)%>%
总结(值=值[条件==“B”]/值[条件==“A”])%>%
排列(变量、值)
#名称值1值2
#
#1 a 5 5
#2 b 5 5
#3 c 5
#4 d 5 5
总结(value1=value1[条件==“B”]/value1[条件==“A”],value2=value2[条件==“B”]/value2[条件==“A”])
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