添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

运行环境Rstudio

首先导入数据, 并且查看一些简单的信息:

votes.seats <- read.csv('votes and seats-2.csv', na.strings = '–', head = TRUE, sep=',')
dim(votes.seats) 
head(votes.seats, 10) #查看前几行row, 默认6
tail(votes.seats, 8) #查看后几行
names(votes.seats) #显示列名称

会发现产生了两张表和一些数据:

纬度和列名称:
在这里插入图片描述
前10个
在这里插入图片描述
后8个
在这里插入图片描述
大致如上,na.strings=’-’ 的作用是把原表中’-’ 的部分已NA显示, head=TRUE的话,表头不会被当成数据,基本和python差不多的读取方式。

接下来我们向单独查看某一列的话就用$操作符, 比如votes.seats$election 就会只显示election那一列的数据。

接下来我们把election那一列的年月日给拆分,这里用到了str_split:

str_split(votes.seats$election, ' ', simplify = T)

在这里插入图片描述
会生成一个列数为4的矩阵,分别对应日月年以及选举这个词,这里就只显示前面几行了。simplify=T的作用是生成矩阵,不然会生成一个list。

接下来会用到mutate操作,其目的是可以在原表的尾部添加新的列。当然他也可以在原有的列上进行修改,只需要关键字是表中存在的即可,不存在的关键字则单独新增一列。

install.packages('tidyverse')
library(dplyr)
library(stringr)
library(tidyr)
votes.seats %>% #用了mutate函数之后,就会在csv文件后面添加新定义的列,列名称就在mutate里定义
  mutate(year = str_split(election, ' ', simplify = T)[, 3])

先下载一个package,并且导入几个library,后续会用到。

注意这里需要用到%>%操作符,个人感觉有点像java里的. 操作,即调用一个函数。在mutate函数中规定新列的名称是year,显示内容就为我们刚才得到的矩阵的第三列,即“年”。

在这里插入图片描述
可以看到vote.seats最后一列已经多了一列year了。

当然你还可以根据需求添加其他的列。

这里我们将增加其他几列,以做后续使用,分别是每个派的投票比例:

votes.seats <- votes.seats %>% 
  mutate(year = str_split(election, ' ', simplify = T)[, 3],
         coalition.seat.share = coalition.seats / total.seats, #转换成百分比
         labor.seat.share = labor.seats / total.seats,
         other.seat.share = other.seats / total.seats,
         total.seat.share = coalition.seat.share + labor.seat.share + other.seat.share) 
votes.seats

接下来是gather函数,他的作用是把实现类似key-value 一样的配对,比如该数据中分别有每一年,不同派(Coalition, Labor, Other)之间的投票比例, 我们希望他们每一个都和年份有一个单独的配对.

votes.seats%>%
  gather(party, seat.share,
         coalition.seat.share, labor.seat.share, other.seat.share)

在这里插入图片描述
这里看不懂没关系,可以发现表的行数变成了129,之前是43行,正好是3倍,即每一年,和每一个party都单独生成一行,所以每一年生成了三行。

继续使用dplyr 函数, 直接在上一个代码上操作即可,并且我们使用

a <- votes.seats%>%
  gather(party, seat.share,
         coalition.seat.share, labor.seat.share, other.seat.share) %>%
  dplyr::select(year, party, seat.share) %>% #这句是只选择这几列显示
  mutate(party = dplyr::recode(party, 'coalition.seat.share' = 'Coalition',
  'labor.seat.share' = 'Labor',
  'other.seat.share' = 'Other'))

在这里插入图片描述
将该表计作a,他是关于年份,party,以及seat.share 的

使用dplyr::select 表示只选择这几列显示。

使用dplyr::recode 从新定义名称。

由于这里没有排序,他是先生成43个所有关于Coalition这一个party的,再是Labor的,最后是Other的。接下来我们将使他显示的更合理。

类似的,再生成一个关于vote.share 的表:

b <- votes.seats%>%
  gather(party, vote.share,
         coalition.pmy, 
         labor.pmy, 
         other.pmy) %>%
  dplyr::select(year, party, vote.share) %>% #这句是只选择这几列显示
  mutate(party = dplyr::recode(party, 'coalition.pmy' = 'Coalition',
                               'labor.pmy' = 'Labor',
                               'other.pmy' = 'Other'))

结果不再展示,和上一个表类似。

接下来使用merge函数,将两个表融合

pmy_vote_efficiency <- a%>%
  merge(b)
pmy_vote_efficiency

在这里插入图片描述
可以发现,现在这个表,将seat.share 和vote.share 融合到了一张表上了。

接下来使用绘图函数ggplot2 可视化他们之间(seat share, vote share)的关系

library(ggplot2) library(scales) ggplot(pmy_vote_efficiency, aes(x = vote.share, y = seat.share, colour = party))+ geom_point()

在这里插入图片描述
实际上将aes的内容写到后面也是可以的

ggplot(pmy_vote_efficiency)+
  geom_point(aes(x = vote.share, y = seat.share, colour = party))

使绘图内容更加丰富

ggplot(pmy_vote_efficiency, aes(x = vote.share, y = seat.share, colour = party))+
  geom_point()+
  geom_abline()+
  geom_smooth(method = 'glm', se=F)+
  scale_x_continuous(labels = percent)+
  scale_y_continuous(labels = percent)+
  scale_colour_manual(values = c('blue', 'red', 'purple'))+
  labs(title = 'Your plot title goes here', 
       x = 'x-axis', 
       y = 'y-axis')+
  theme_minimal()+
  theme(legend.title = element_blank(), 
        legend.position = 'bottom')

在这里插入图片描述
使用geom_abline() 生成一条总体的回归线,geom_smooth 为每一类数据生成一条单独的线。

scale_x_continuous(labels = percent) 将坐标轴改成百分比显示。

数据下载地址: votes and seats-2.csv运行环境Rstudio首先导入数据, 并且查看一些简单的信息:votes.seats &lt;- read.csv('votes and seats-2.csv', na.strings = '–', head = TRUE, sep=',')dim(votes.seats) head(votes.seats, 10) #查看前几行row, 默认6tail(votes.seats, 8) #查看后几行names(votes.seats) R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值) #dplyr包使用recode函数进行单列数据列内容编码、转换 #dplyr包使用recode函数进行多列数据列内容编码、转换 strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE) 参数:x待切割的字符串;split分割符。 备注:返回值为list。 strsplit("a.b.c", ".", fixed = TRUE) [[1]] [1] "a" "b" "c" str_split {stringr} str_split(string, pattern,
str()函数的作用用英语来表示是:check classification of viriables,一般用于检查数据框当中有哪些数据,首先我们先引入一个“钻石”的数据看看,其中的代码如下所示: > diamonds # A tibble: 53,940 x 10 carat cut color clarity depth table price x ...
R语言字符串拆分及合并 字符串分割函数:strsplit() 其命令形式为:strsplit(x, split, fixed= F, perl= F, useBytes= F) 参数x为字符串格式向量,函数依次对向量的每个元素进行拆分 参数split为拆分位置的字串向量,即在哪个字串处开始拆分;该参数默认是正则表达式匹配;若设置fixed= T则表示是用普通文本匹配或者正则表达式的精确匹配。用普通...
论文导读:Deep Attentive Learning for Stock Movement Prediction From Social Media Text and Company Correl weixin_45062600: 请问在计算price的Temporal Attention时,计算权重beta时,使用hi*W*hz,这个最后得到的是1个标量值吗,为什么按论文中描述的维度计算,最后是1个dm维的向量,维度对应不上呢 好看的混淆矩阵可视化,以小数方式显示 FrenchOldDriver: confusion matrix 混淆矩阵 【踩坑指南】Stable Diffusion 服务器端部署笔记 FrenchOldDriver: 这种换个下载源吧,一般卡住就下载不了了 【踩坑指南】Stable Diffusion 服务器端部署笔记 rainbow199191: 楼主大大,第一次运行时一直卡在下载那块,有个1.59G的下到66%就不动了,这个是要一直等着吗? 好看的混淆矩阵可视化,以小数方式显示 cm是什么