Как вы суммируете переменные в R? - PullRequest
1 голос
/ 22 января 2020

Добрый день,

После нескольких попыток R не суммирует данные, приведенные ниже. Как видно из реплики моих данных, в списке 4 33024 почтовых индекса. R продолжит говорить, что у 33024 только 2 травмы и подведет итог остальным. Любая помощь по этому поводу?

Редактировать: Это также должно помочь. Видя, что Макс остается на 3 и не увеличивается в зависимости от количества почтовых индексов, которые получили травму.

ZipCode         Age        Fatality       Injury        Year   
 33065  : 24   15     :28   Min.   :1     Min.   :1.000   2015:92  
 33313  : 18   18     :27   1st Qu.:1     1st Qu.:1.000   2016:67  
 33317  : 14   13     :21   Median :1     Median :1.000   2017:35  
 33076  : 13   17     :19   Mean   :1     Mean   :1.083            
 33026  : 11   12     :18   3rd Qu.:1     3rd Qu.:1.000            
 33311  : 11   14     :18   Max.   :1     Max.   :3.000 
  ZipCode Age Fatality Injury Year
1   33023  17       NA      1 2015
2   33024   6       NA      1 2015
3   33024   8       NA      2 2015
4   33024  13       NA      1 2015
5   33024  13       NA      1 2015
6   33026  14       NA      1 2015
BCD = read.csv(file.choose())
BCD

head(BCD)
tail(BCD)

library(ggplot2)
str(BCD)

colnames(BCD) = c("ZipCode", "Age", "Fatality", "Injury", "Year")
head(BCD)

list(BCD$Injury)
list(BCD$ZipCode)

factor(BCD$Year)
factor(BCD$ZipCode)

BCD$Year= factor(BCD$Year)
BCD$ZipCode= factor(BCD$ZipCode)
BCD$Age = factor(BCD$Age)
BCD$Injury = as.numeric(BCD$Injury)
BCD$Fatality = as.numeric(BCD$Fatality)
str(BCD)
head(BCD)
summary(BCD)


BCD2 = ggplot(data=BCD, aes(x=Injury, y=ZipCode, color=Age, size=Year))
BCD2 + geom_point()+ geom_smooth()

Это код к этому пункту. Я пытаюсь создать ggplot на основе года, возраста, почтового индекса и количества травм, полученных по этому почтовому индексу.

1 Ответ

0 голосов
/ 22 января 2020

функция summary из R дает вам максимальное значение точки, а не кумулятивную сумму в векторе "Травма", и не учитывает группировку по столбцу ZipCode.

Для расчета кумулятивной суммы из травм на ZipCode, вам нужно group_y ZipCode, а затем применить cumsum функцию. Вы можете сделать это, используя пакет dplyr.

library(dplyr)
df %>% group_by(ZipCode) %>% 
  mutate(CumSumInjury = cumsum(Injury))

# A tibble: 6 x 7
# Groups:   ZipCode [3]
    Row ZipCode   Age Fatality Injury  Year CumSumInjury
  <int>   <int> <int> <lgl>     <int> <int>        <int>
1     1   33023    17 NA            1  2015            1
2     2   33024     6 NA            1  2015            1
3     3   33024     8 NA            2  2015            3
4     4   33024    13 NA            1  2015            4
5     5   33024    13 NA            1  2015            5
6     6   33026    14 NA            1  2015            1

Комбинируя его с ggplot, вы можете получить следующий график:

library(dplyr)
library(ggplot2)
df %>% group_by(ZipCode) %>% 
  mutate(CumSumInjury = cumsum(Injury)) %>%
  ggplot(aes(x = as.factor(ZipCode), y = CumSumInjury, color = Age, size = Year))+
  geom_point()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...