Dplyr给出错误的结果

时间:2018-08-31 17:28:09

标签: r dplyr mean

我正在使用dplyr汇总数据集,但是结果不正确。我的代码如下:-

Raw_Grp<-Raw_data%>%dplyr::group_by(as.character(Raw_data$Gardu))
                  `%>%dplyr::summarize(Avg=mean(Raw_data$Age))

下面是str:-

data.frame':    3016 obs. of  2 variables:
 $ Kecamatan: chr  "CENGKARENG" "CENGKARENG" "CENGKARENG" "CENGKARENG" ...
 $ Age      : num  377 370 352 313 299 291 260 223 207 200 ...

理想情况下,我应该按组值来获取,但是我要获得所有不同组中显示的总均值。我已经搜索并尝试了最大的可能性,例如创建data.table但结果相同。如果我按Excel或其他方式检查分组,则结果会很理想。 请帮助

1 个答案:

答案 0 :(得分:1)

当我们使用Raw_data$columnname时,它将提取破坏group_by条件的整个列。因此,语法只能是感兴趣的列的列名

library(dplyr)
Raw_data %>% 
     group_by(Gardu) %>% 
     summarise(Avg = mean(Age))

但是,在某些情况下,我们需要整列。例如,如果我们要检查“ Gardu”中“ Age”的多少个元素小于整个“ Age”列的值

Raw_data %>%
    group_by(Gardu) %>%
    summarise(n = sum(Age < .$Age))

数据

Raw_data <- structure(list(Gardu = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 
 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("a", "b", "c"), class = "factor"), 
Age = c(21L, 19L, 38L, 31L, 37L, 47L, 21L, 41L, 42L, 20L, 
34L, 25L, 37L, 37L, 23L)), class = "data.frame", row.names = c(NA, 
-15L))