首页 > 解决方案 > Dplyr 给出错误的结果

问题描述

我正在使用 dplyr 来总结数据集,但它给出了错误的结果。我的代码是 bekow :-

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 或其他收费中检查组,它会给出完美的结果。请帮忙

标签: rdplyrmean

解决方案


当我们使用时,它会提取破坏条件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))

推荐阅读