Dplyr дает неверные результаты - PullRequest
0 голосов
/ 31 августа 2018

Я использую dplyr для суммирования набора данных, но он дает неверный результат. Мой код как bekow: -

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

Ниже находится ул: -

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 ...

В идеале я должен получить значения групп, но я получаю общее среднее значение, отображаемое во всех различных группах. Я искал и пробовал максимальные возможности, такие как создание таблицы данных, но тот же результат. Если я проверю группу в Excel или других сборов, это даст отличные результаты. Пожалуйста, помогите

1 Ответ

0 голосов
/ 31 августа 2018

Когда мы используем Raw_data$columnname, он извлекает весь столбец, нарушая условие group_by. Таким образом, синтаксис будет только имена столбцов заинтересованных столбцов

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

Но бывают случаи, когда нам нужен весь столбец. Например, если мы хотим проверить, сколько элементов 'Age' в 'Gardu' меньше, чем значения всего столбца '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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...