Сравнение одного значения для строки со средним значением всех строк для одного и того же столбца - PullRequest
1 голос
/ 04 октября 2019

У меня есть большой набор данных, который я хотел бы разработать для отдельных лиц, чтобы они могли выбрать одного человека для сравнения, а затем увидеть, как его данные сравниваются со средними показателями по всем другим людям. Я пытаюсь найти наиболее эффективный способ и надеюсь на некоторые идеи.

Я попытался создать два отдельных фрейма данных, а затем использовать списки, чтобы вручную добавить строки вместе, чтобы я мог отобразить их в ggplot,Однако дополнительная манипуляция также включает в себя изменение данных.

library(tidyverse)

mtcars$car <- rownames(mtcars)

df <- mtcars %>% 
    filter(mtcars$car == 'Datsun 710') %>% 
    group_by(car) %>% 
    summarize(disp = first(disp)) 

df2 <- mtcars %>% 
  summarize(disp = mean(disp)) 

Ожидаемый результат следующий:

group   disp
Datsun 710  108
All cars    230.7219

1 Ответ

1 голос
/ 04 октября 2019

Получив полученный результат, его можно изменить на

library(dplyr)
mtcars %>%
      summarise(car = "All cars", disp = mean(disp)) %>% 
      bind_rows(df, .)
# A tibble: 2 x 2
#  car         disp
#   <chr>      <dbl>
#1 Datsun 710  108 
#2 All cars    231.

Это также можно сделать с помощью add_row. Создайте столбец имен строк с rownames_to_column, select интересующими столбцами, добавьте строки с add_row и filter строками на основе значений 'car'

library(tibble)
mtcars %>%
   rownames_to_column('car') %>% 
   select(car, disp) %>% 
   add_row(car = "All cars", disp = mean(.$disp)) %>%
   filter(car %in% c('Datsun 710', 'All cars'))
#         car     disp
#1 Datsun 710 108.0000
#2   All cars 230.7219
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...