2017-05-25 97 views
1

组假设我有一个数据集像总平均和平均通过R中与dplyr

df <- data.frame(dive=factor(sample(c("dive1","dive2"),10,replace=TRUE)),speed=runif(10)) 

现在我的目标是找到“数据的总平均”,并在同一个“由R中子组中庸”数据。所以,我可以说我应该得到的东西像

# dive Total_Mean speed 
# 1 dive1 0.52  0.5790946 
# 2 dive2 0.52  0.4864489 

我使用一个代码

df%>% summarise(avg=mean(speed))%>% 
group_by(dive)%>% 
summarise(Avg_group=mean(dive)) 

哪项是错误的,我知道,所以我的全部追求的是哪能组通​​过,并打开我的数据在dplyr获得在不同的时间

回答

4

执行不同的操作试试这个:

df %>% 
    mutate(avg=mean(speed)) %>% 
    group_by(dive) %>% 
    summarise(Avg_group=mean(speed),Total_Mean=first(avg)) 
+0

嗨nikola,非常感谢。它像一个魅力。 1个快速问题,如果我总结了3个以上的小组,我想要在两个小组中取得总体平均数,而不是整个数据。 –

+1

对不起,我不确定我是否理解你的问题。考虑一下,你当然可以开一个新的问题并清楚地陈述(就像你在这个问题中所做的那样),你的输入和期望的输出是什么。您很可能会收到有用的帮助。 – nicola

1

我们可以用data.table

library(data.table) 
setDT(df)[, .(Avg_group = mean(speed), Total_mean = mean(df$speed)),.(dive)] 
#  dive Avg_group Total_mean 
#1: dive2 0.4733421 0.4238937 
#2: dive1 0.3744452 0.4238937