案例:该数据集的是一个关于美国2017年犯罪的一个数据集,接下来我们对该数据集进行分析

字段:

####    S# :数据编号
####    Location:案件发生城市,州
####    Date:时间
####    Summary:案件总结
####    Fatalities:死亡人数
####    Injured:受伤人数
####    Total victims:受害者总人数
####    Mental Health Issues:精神状况
####    Race:种族
####    Gender:性别
####    Latitude:纬度
####    Longitude:经度

1.导入包

library(tidyverse)
library(stringr)
library(data.table)
library(maps)
library(lubridate)
library(leaflet)

2.导入并查看数据集

shooting <- read.csv('Mass Shootings Dataset Ver 2.csv',stringsAsFactors = F,header = T)
summary(shooting)
glimpse(shooting)

  结论:一共是320行数据,13个变量数据量不大,但是要对数据进行重构

3.数据重构

# 将Date字段进行转化,同时创建新的变量year
shooting <- shooting %>% select(1:13) %>% mutate(Date=mdy(shooting$Date),year=year(Date))
summary(shooting$year)# 对性别进行提取
shooting$Gender<-if_else(shooting$Gender=="M","Male",shooting$Gender)
# 对种族字段进行提取
shooting$Race<-if_else(str_detect(shooting$Race,"Black American or African American"),"Black",shooting$Race)
shooting$Race<-if_else(str_detect(shooting$Race,"White American or European American"),"White",shooting$Race)
shooting$Race<-if_else(str_detect(shooting$Race,"Asian American"),"Asian",shooting$Race)
shooting$Race<-if_else(str_detect(shooting$Race,"Some other race"),"Other",shooting$Race)
shooting$Race<-if_else(str_detect(shooting$Race,"Native American or Alaska Native"),"Native American",shooting$Race)
# 对时间数据进行切分
shooting$yearcut<-cut(shooting$year,breaks = 10)
# 对是否有心理疾病进行处理
shooting$Mental.Health.Issues<-if_else(str_detect(shooting$Mental.Health.Issues,"Un"),"Unknown",shooting$Mental.Health.Issues)
shooting$Race<-str_to_upper(shooting$Race)
shooting$Mental.Health.Issues<-str_to_upper(shooting$Mental.Health.Issues)
# 把location分解成city和state两个变量
shooting$city <- sapply(shooting$Location,function(x){return(unlist(str_split(x,','))[1] %>% str_trim())
})shooting$state <- sapply(shooting$Location,function(x){return(unlist(str_split(x,','))[2] %>% str_trim())
})

4.EDA分析

  4.1每年的枪击的死亡人数的变化

# 每年受到枪击的死亡人数
shooting %>% group_by(year) %>%summarise(total=sum(Total.victims)) %>%ggplot(aes(x=year,y=total)) +geom_bar(stat = 'identity',fill='blue') +geom_text(aes(label=total),vjust=-0.2) +xlim(1969,2020) +geom_line(color='red') +ylab('Total victims every year') +ggtitle('People died because of gun shoot every year')

  结论:在2015年之后,美国的枪击案频发,2017年的因为枪击案的死亡人数上升特别明显

  4.2 发生枪击案的地点

# 受伤人数的地理位置分布
shooting %>%select(Total.victims,Fatalities,Longitude,Latitude,Summary) %>%na.omit() %>%leaflet() %>%addProviderTiles(providers$OpenStreetMap) %>%fitBounds(-124,30,-66,43) %>%addCircles(color='#8A0707',lng = ~Longitude,lat = ~Latitude,weight = 1,radius = ~sqrt(Total.victims) * 20000,popup = ~Summary)# 死亡人数的地理位置分布
shooting %>%select(Total.victims,Fatalities,Longitude,Latitude,Summary) %>%na.omit() %>%leaflet() %>%addProviderTiles(providers$OpenStreetMap) %>%fitBounds(-124,30,-66,43) %>%addCircles(color='blue',lng = ~Longitude,lat = ~Latitude,weight = 1,radius = ~sqrt(Fatalities) * 20000,popup = ~Summary)

                    受伤人数分布                                    死亡人数分布

  结论:从地理信息结合人口信息来看,美国东部发生枪击案的概率要高于美国西部

  4.3 枪手的性别分布

shooting %>%ggplot(aes(x=factor(Gender),fill=factor(Gender)))+geom_bar()+xlab('Gender')+ylab('Number of each Gender')+ggtitle('The distribution of gender')

  结论:男性作案的可能性远远大于女性

  4.4 枪击案的种族分布

shooting %>% na.omit() %>%group_by(Race) %>%summarise(num=sum(Total.victims)) %>%ggplot(aes(x=factor(Race),y=num,fill=factor(Race)))+geom_bar(stat = 'identity')+coord_polar(theta = 'y')+labs(x='Race',y='Number of killed people',fill='Race')+ggtitle('People killed by different race')

  结论:白人作案很多,但是黑人作案的数量也在上升

  4.5 枪击案的月份分布

shooting %>%mutate(month=month(Date)) %>%group_by(month) %>%summarise(n=sum(Total.victims)) %>%ggplot(aes(x=factor(month),y=n)) +geom_bar(stat = 'identity')+labs(x='month',y='Number of killed people')+ggtitle('The distribution of killed people every month')+geom_text(aes(label=n),vjust=-0.2,color='red')+theme_bw()

  结论:10月份发生枪击案的数量最高,最危险

  4.5 枪手是否有精神疾病

shooting %>% na.omit() %>% ggplot(aes(x=Mental.Health.Issues)) + geom_bar()+scale_x_discrete(limits=c("NO","YES"))+theme_bw()

  结论:凶手是否患有精神疾病并不是一个主要原因

  4.6 患有精神疾病的和没有患有精神疾病的人是否是数量的差异

shooting %>%na.omit() %>%group_by(Mental.Health.Issues) %>%summarise(n=sum(Total.victims)) %>%ggplot(aes(x=factor(Mental.Health.Issues),y=n,group=1)) +geom_bar(stat = 'identity',fill='pink')+scale_x_discrete(limits=c('NO','YES'))+geom_text(aes(label=n),vjust=-0.2)+geom_line(color='red')

  结论:患有精神疾病的凶手杀人的数量是没患有精神病人的一倍,精神病枪手的危害更大

  4.7不同的时间段内,枪手种族的统计

shooting %>%na.omit() %>%group_by(yearcut) %>%ggplot(aes(x=yearcut,fill=Race))+geom_bar(position = 'dodge')

  结论:可以看出虽然枪击案是以白人为主,但是在近几年来黑人翻案的数量也在不断增多

  4.8枪手的年龄分布

# 通过正则表达式从摘要中提取年龄
tmp <- mutate(shooting,age=str_extract_all(shooting$Summary,pattern = '(,\\s)\\d{2}(,)'),age2 = str_extract_all(shooting$Summary,pattern = '(a\\s)\\d{2}(-year)'))
tmp$age <- str_sub(tmp$age,3,4)
tmp$age2 <- str_sub(tmp$age2,3,4)
# 去掉年龄不明的字段
te <- subset(tmp,tmp$age != 'ar')
te2 <- subset(tmp,tmp$age2 != 'ar')
te <- rbind(te,te2)for(i in 1:nrow(te)){if(te$age[i] == 'ar'){te$age[i] = te$age2[i]}
}
te <- arrange(te,age)
te <- te[-c(1:4),]
te <- arrange(te,S.)
te$age <- as.integer(te$age)
te3 <- te %>%select(S.,age) %>%mutate(agecut=cut(te$age,breaks = 10*(1:7)))
shoot_age <- left_join(te3,shooting)

ggplot(data=shoot_age,aes(x=agecut))+geom_bar(fill='blue')+theme_bw()

  结论:从年龄分布上来看,年轻人作案的几率较大,冲动是魔鬼

  4.9 不同年龄段精神疾病的分布

ggplot(data=shoot_age,aes(x=agecut,fill=Mental.Health.Issues))+geom_bar()

  结论:10~20,和30~40岁之间的枪手群是精神疾病的高发群体

4.10 枪击案件的城市分布和州分布

# 城市分布
shooting %>%group_by(city) %>%summarise(count=n()) %>%filter(city != '' & count >= 2) %>%ggplot(aes(x=reorder(city,count),y=count))+geom_bar(stat = 'identity',fill='lightblue')+coord_flip()+labs(x='City',y='Number of gun-shot happended')+ggtitle('The number of case happened in each city')# 州分布
shooting %>%group_by(state) %>%summarise(count=n()) %>%filter(state != '' & count >= 2) %>%ggplot(aes(reorder(state,count),y=count))+geom_bar(stat='identity',fill='lightblue')+coord_flip()+labs(x='State',y='Number of gun-shot happended')+ggtitle('The number of case happened in each state')

                  城市分布                                                                                                                                  州分布

  结论:发生枪击案件最多的是加州

总结:

  1.从枪手的性别来看,男性作案是极大多数

  2.从枪手的种族来看,白人是作案的主体,但是黑人作案的数量也在逐年上升

  3.从枪手的年龄分布来看10~50岁之间的青中年占了绝大多数

  4.从枪手的精神疾病来看,虽然枪手患有精神疾病和没有患有精神疾病的数量并不显著,但是患有精神疾病的枪手会造成更大的伤害,一定要重点控制

  5.从枪击案件的时间上来看,枪支犯罪在2015年上升的最多,但是到了2017年有了一个极端的上升,可见控枪的重要性

  6.从枪支案件的地理信息来看,总体上东部发生枪击案件的数量要大于西部

  7.从枪击案发生的数量上来看,加州这几年发生枪击案的数量最多

代码:https://github.com/Mounment/R-Project

转载于:https://www.cnblogs.com/luhuajun/p/8881369.html

R语言-美国枪杀案分析相关推荐

  1. R语言亚组分析 (Subgroup Analysis)及森林图绘制实战

    R语言亚组分析 (Subgroup Analysis)及森林图绘制实战 目录 R语言亚组分析 (Subgroup Analysis)及森林图绘制实战 #亚组分析

  2. R语言伪相关性分析(Spurious Correlation)、相关关系不是因果关系:以哺乳动物数据集msleep为例

    R语言伪相关性分析(Spurious Correlation):相关关系不是因果关系.相关关系不是因果关系.相关关系不是因果关系 #correlation doesn't means causatio ...

  3. R语言伪相关性分析(Spurious Correlation)、相关关系不是因果关系:以缅因州离婚率数据集为例

    R语言伪相关性分析(Spurious Correlation).相关关系不是因果关系:以缅因州离婚率数据集为例 #correlation doesn't means causation 目录

  4. R语言构建生存分析(survival analysis)模型示例

    R语言构建生存分析(survival analysis)模型示例 生存分析处理的是预测特定事件将要发生的时间.它也被称为失败时间分析或死亡时间分析.例如,预测癌症患者存活的天数,或者预测机械系统将要失 ...

  5. pvrect r语言 聚类_技术贴 | R语言——肠型分析:介绍、方法

    点击蓝字↑↑↑"微生态",轻松关注不迷路 导读 2011年,肠型(Enterotypes)的概念首次在<自然>杂志上由Arumugam等[1]提出,该研究发现可以将人类 ...

  6. R语言实现单因素方差分析

    1.方差分析基本原理:是一种分析各类别自变量对数值因变量影响的一种统计方法.自变量对因变量的影响也称为自变量效应.由于影响效应的大小体现为因变量的误差里有多少是由自变量造成的,因此,方差分析通过对数据 ...

  7. R语言逻辑回归预测分析付费用户

    原文链接:http://tecdat.cn/?p=967 对于某企业新用户,会利用大数据来分析该用户的信息来确定是否为付费用户,弄清楚用户属性,从而针对性的进行营销,提高运营人员的办事效率(点击文末& ...

  8. r语言实现关联分析--关联规则挖掘(Apriori算法) (r语言预测学习笔记)

    r语言实现关联分析–关联规则挖掘 关联分析: 引子: 我们一般把一件事情发生,对另一间事情也会产生影响的关系叫做关联.而关联分析就是在大量数据中发现项集之间有趣的关联和相关联系(形如"由于某 ...

  9. R语言灰色关联分析法

    R语言灰色关联分析法 输入数据 数据的标准化/归一化 求灰色系数 求差序列和最大值最小值 求关联系数 计算关联度并排序 所有代码 灰色关联度分析(Grey Relation Analysis,GRA) ...

最新文章

  1. 今天看到两个题 写出来思考一下
  2. 【SICP练习】104 练习3.1-3.4
  3. 奥密克戎新毒株XE出现!传播速度快10%
  4. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例三)
  5. pve安装黑群晖直通硬盘_在Proxmox VE(PVE)安装黑群晖
  6. yjk只算弹性的不计算弹塑性_材料本构弹塑性力学知识二
  7. Java生成随机数的4种方式,以后就用它了!
  8. 打造狂拽炫酷的主流自定义侧滑控件(仿酷狗和QQ5.0)
  9. 科大讯飞:5年内 科技会场没机器人端茶倒水就太low了
  10. 新广告法涉及的敏感词列表
  11. 软件测试面试题 背完面试没问题 亲测
  12. 100人PJ?へへ。バージョン1.0の反省書を書かなければなりません、今日。
  13. 使用python进行普适计算/通用计算
  14. 龙家贰少的MarkDown学习笔记
  15. Java学习之旅-04
  16. LaTeX各种命令,符号
  17. UBUNTU软件出现崩溃的问题
  18. H1N1猪流感症状及预防
  19. 洛谷 P1118 [USACO06FEB]数字三角形Backward Digit Su…
  20. Win11三指触控怎么设置

热门文章

  1. 什么是istp?istp收录
  2. 51单片机(十一)蜂鸣器
  3. Rails sanitize
  4. 小程序字体 text 多种属性样式
  5. 第四代计算机相关资料,当前的计算机一般被认为是第四代计算机,它所采用的逻辑元件是...
  6. ospf负载均衡配置实例(ospf双链路负载均衡配置实例)
  7. javaweb大学生消费状况调查系统
  8. 动态规划(分梨、最长公共子序列)
  9. python tkinter链接数据库的图书借阅系统
  10. [Windows]PDF转Word工具 需配合 WPS 使用