• 欧洲杯直播比赛

​R数据科学练习题:第一章(附答案)

关键词:​,数据,科学,练习题,第一章,附,答案,数据,

R数据科学练习题:第一章 1.2 练习 (1)运行ggplot(data = mpg),你会看到什么? library(ggplot2)ggplot(data =mpg) 图片 # 很明显,只是一个空白的画板。 (2)数据集mpg中有多少行?多少列? 四种

  • R数据科学练习题:第一章

    1.2 练习

    (1)运行ggplot(data = mpg),你会看到什么?

    library(ggplot2)ggplot(data = mpg)

    图片

    # 很明显,只是一个空白的画板。

    (2)数据集mpg中有多少行?多少列?

    四种查看方法

    dim(mpg)

    ## [1] 234  11

    str(mpg)

    ## tibble [234 x 11] (S3: tbl_df/tbl/data.frame)##  $ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...##  $ model       : chr [1:234] "a4" "a4" "a4" "a4" ...##  $ displ       : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...##  $ year        : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...##  $ cyl         : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...##  $ trans       : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...##  $ drv         : chr [1:234] "f" "f" "f" "f" ...##  $ cty         : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...##  $ hwy         : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...##  $ fl          : chr [1:234] "p" "p" "p" "p" ...##  $ class       : chr [1:234] "compact" "compact" "compact" "compact" ...

    ncol(mpg)

    ## [1] 11

    nrow(mpg)

    ## [1] 234

    library(tibble)glimpse(mpg)

    ## Rows: 234## Columns: 11## $ manufacturer"audi", "audi", "audi", "audi", "audi", "audi", "audi"...## $ model        "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 quattro"...## $ displ        1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0, 2.0,...## $ year         1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1999, ...## $ cyl          4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, ...## $ trans        "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)", "a...## $ drv          "f", "f", "f", "f", "f", "f", "f", "4", "4", "4", "4",...## $ cty          18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 17, 17...## $ hwy          29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 25, 25...## $ fl           "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p",...## $ class        "compact", "compact", "compact", "compact", "compact",...

    (3)变量drv的意义是什么?使用?mpg命令阅读帮助文件以找出答案。

    # ?mpg# the type of drive train, where f = front-wheel drive,# r = rear wheel drive, 4 = 4wd# 驱动类型 f=前轮驱动,r=后轮驱动,4=4轮驱动

    (4)使用hwy和cyl绘制一张散点图。

    ggplot(data=mpg) +   geom_point(mapping = aes(x = hwy, y = cyl))

    图片

    (5)如果使用class和drv绘制散点图,会发生什么情况?为什么这张图没什么用处?

    ggplot(data=mpg) +   geom_point(mapping = aes(x = class, y = drv))

    图片

    # 每种汽车类型对应的驱动类型;两个变量都是分类变量,# 获取不到想要的信息。所以这张图没什么用。

    1.3 练习

    (1)以下这段代码有什么错误?为什么点不是蓝色的?

    ggplot(data=mpg) +   geom_point(mapping = aes(x = displ, y = hwy, color = "blue"))

    图片

    # 正确代码如下:ggplot(data=mpg) +   geom_point(mapping = aes(x = displ, y = hwy), color = "blue")

    图片

    (2)mpg中的哪些变量是分类变量?哪些是连续变量?(提示输入?mpg来阅读这个数据集的文档。)当调用mpg时,如何才能看到这些信息?

    # ?mpg#分类变量chr;连续(整型)变量intglimpse(mpg)

    ## Rows: 234## Columns: 11## $ manufacturer"audi", "audi", "audi", "audi", "audi", "audi", "audi"...## $ model        "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 quattro"...## $ displ        1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0, 2.0,...## $ year         1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1999, ...## $ cyl          4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, ...## $ trans        "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)", "a...## $ drv          "f", "f", "f", "f", "f", "f", "f", "4", "4", "4", "4",...## $ cty          18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 17, 17...## $ hwy          29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 25, 25...## $ fl           "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p",...## $ class        "compact", "compact", "compact", "compact", "compact",...

    (3)将一个连续变量映射为color、size和shape。对分类变量和连续变量来说,这些图形属性的表现有什么不同?

        color:连续变量使用的是一种颜色,从浅到深

        size:一个区间的size对应不同的变量

        shape:连续变量映射到shape中会报错

    (4)如果将同一个变量映射为多个图形属性,会发生什么情况?

        可以正常出图,看个人需要进行,

        一般不需要这样做,会让人觉得有点冗余。

    (5)stroke这个图形属性的作用是什么?它适用于哪些形状?(提示:使用?geom_point命令。)

        边框;21-24的图形样式,因为其具有填充和边框

    (6)如果将图形属性映射为非变量名对象,比如aes(color = displ < 5),会发生什么情况?

    ggplot(data = mpg) +   geom_point(mapping = aes(x = displ, y = hwy, color = displ << span=""> 5))

    图片

    1.5 练习

    (1)如果使用连续变量进行分面,会发生什么情况?

        会造成每个图形异常的小

    (2)在使用facet_grid(drv ~ cyl)生成的图中,空白单元的意义是什么?它们和以下代码生成的图有什么关系?

    # 空白单元代表没有drv和cyl值对应的组合ggplot(data = mpg) +   geom_point(mapping = aes(x = drv, y = cyl))

    图片

    # drv和cyl值所组成的散点图

    (3)试试以下代码会绘制出什么图?.的作用是什么?

        .的作用表示不在行或列的维度分面。

        .在前表示不按行分面,在后表示不按列分面。

    ggplot(data = mpg) +   geom_point(mapping = aes(x = displ, y = hwy)) +   facet_grid(drv ~ .)

    图片

    ggplot(data = mpg) +   geom_point(mapping = aes(x = displ, y = hwy)) +   facet_grid(. ~ cyl)

    图片

    (4)查看本节的第一个分面图:

    ggplot(data = mpg) +   geom_point(mapping = aes(x=displ, y = hwy)) +   facet_wrap(~ class, nrow = 2)

    图片

        与使用图形属性相比,使用分面的优势和劣势分别是什么?如果有一个更大的数据集,你将如何权衡这两种方法的优劣?

        优势:根据想要观测的变量将数据分为每一分页,显示出了每一分页中的趋势及不同分页之间的差别

        劣势:由于数据被分割为一个个的分页,数据整体的趋势就不能看出来了。

        根据目的来评判,如果看整体趋势,就不用分页。如果看单个变量的变化趋势,就可以使用分页

    (5)阅读?facet_wrap的帮助页面,nrow和ncol的功能分别是什么?还有哪些选项可以控制分面的布局?为什么函数facet_grid()没有变量nrow和ncol?

        nrow和ncol分别代表分页的行数和列数

        facet_grid只会是单列或者单行,不需要这两个参数

    (6)在使用函数facet_grid()时,一般应该将具有更多唯一值的变量放在列上。为什么这么做呢?

    # 个人认为是为了图片排版需要

    1.6 练习

    (1)在绘制折线图、箱线图、直方图、和分区图时,应该分别使用哪种几何对象?

    ·geom_line

    ·geom_boxplot

    ·geom_histogram

    ·facet_grid

    (2)在脑海中运行以下代码,并预测会有何种输出。接着在R中运行代码,并检查你的预测是否正确。

    ggplot(data = mpg,       mapping = aes(x = displ,y = hwy, color = drv)       ) +   geom_point() +   geom_smooth(se = FALSE)

    图片

    # se是否显示置信区间?(默认为TRUE。)

    (3)show.legend = FALSE的作用是什么?删除它会发生什么情况?你觉得我为什么要在本章前面的示例中使用这句代码?

    ggplot(data = mpg) +   geom_smooth(    mapping = aes(x = displ, y = hwy, color = drv) ,    show.legend = TRUE  )

    图片

    ·隐藏图例

    ·图例显示

    ·为了排版?

    (4)geom_smooth() 函数中的 se 参数的作用是什么?

        se:是否显示置信区间?(默认为TRUE。)

    (5)以下代码生成的两张图有什么区别吗?为什么?

    ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +   geom_point() +   geom_smooth()

    图片

    ggplot() +   geom_point(    data = mpg,    mapping = aes(x = displ, y = hwy)  ) +   geom_smooth(    data = mpg,    mapping = aes(x = displ, y = hwy)  )

    图片

    # 结果显示无区别

    (6)自己编写 R 代码来生成以下各图。

    p1 <-< span=""> ggplot(data = mpg, mapping = aes(displ, hwy)) +      geom_point(size = 2.5) +      geom_smooth(se = F, size = 1.5)p2 <-< span=""> ggplot(data = mpg, mapping = aes(displ, hwy)) +      geom_point(size = 2.5) +      geom_smooth(se = F, size = 1.5, mapping = aes(group = drv))p3 <-< span=""> ggplot(data = mpg, mapping = aes(displ, hwy, color = drv)) +      geom_point(size = 2.5) +      geom_smooth(se = F, size = 1.5, mapping = aes(group = drv, color = drv))p4 <-< span=""> ggplot(data = mpg, mapping = aes(displ, hwy)) +      geom_point(size = 2.5, mapping = aes(color = drv)) +      geom_smooth(se = F, size = 1.5)p5 <-< span=""> ggplot(data = mpg, mapping = aes(displ, hwy)) +      geom_point(size = 2.5, mapping = aes(color = drv)) +      geom_smooth(se = F, size = 1.5, mapping = aes(group = drv, linetype = drv))p6 <-< span=""> ggplot(data = mpg, mapping = aes(displ, hwy)) +      geom_point(size = 2.5, mapping = aes(color = drv))# method 1suppressWarnings(library(gridExtra))grid.arrange(p1, p2, p3, p4, p5, p6, ncol= 2, nrow = 3)

    图片

    # method 2suppressWarnings(library(cowplot))plot_grid(p1, p2, p3, p4, p5, p6, nrow=3, ncol=2, labels = c("A","B","C","D","E","F"))

    图片

    #method 3#suppressWarnings(library(patchwork))library(patchwork)

    Warning: package 'patchwork' was built under R version 4.0.2

    p1 + p2 + p3 + p4 + p5 + p6 + plot_layout(nrow = 3) + plot_annotation(tag_levels = 'A')

    图片

    1.7 练习

    (1)stat_summary() 函数的默认几何对象是什么?不使用统计变换函数的话,如何使用几何对象函数重新生成以上的图?

        默认几何对象为pointrange

    ggplot(data = diamonds) +  geom_pointrange(    mapping = aes(x = cut, y = depth),    stat = "summary",    fun.min = min,    fun.max = max,    fun = median  )

    图片

    (2)geom_col() 函数的功能是什么?它和 geom_bar() 函数有何不同?

    ·geom_col()针对常规的柱状图,既给x,也给y

    ·geom_bar()针对计数的柱状图,只给x

    (3)多数几何对象和统计变换都是成对出现的,总是配合使用。仔细阅读文档,列出所有成对的几何对象和统计变换。它们有什么共同之处?

        查看ggplot2。可以在里面查询。

    (4)stat_smooth() 函数会计算出什么变量?哪些参数可以控制它的行为?

        ?geom_smooth后,在下面找到Computed variables区域可以看到如下信息:

    ·预测值y

    ·均值以下的置信区间ymin

    ·均值以上的置信区间ymax

    ·标准误差se

        method和formula

        详见stat_smooth

    (5)在比例条形图中,我们需要设定 group = 1 ,这是为什么呢?换句话说,以下两张图会有什么问题?

    group = 1表示讲这些类别之和作为1,进行按比例画柱状图

    ggplot(data = diamonds) +   geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

    图片

    ggplot(data = diamonds) +   geom_bar(mapping = aes(x = cut, y = ..prop..))

    图片

    ggplot(data = diamonds) +   geom_bar(    mapping = aes(x = cut, fill = color, y = ..prop..)      )

    图片

    1.8 练习

    (1)以下图形有什么问题?应该如何改善?

    ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +   geom_point()

    图片

    # 因为舍入取整,造成很多点彼此重叠,因此需要添加随机扰动,如下两种方法:ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +   geom_point(position = "jitter")

    图片

    ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +   geom_jitter()

    图片

    (2)geom_jitter() 使用哪些参数来控制抖动的程度?

        水平(width),竖直(height)两个参数

    (3)对比 geom_jitter() 与 geom_count() 。

    #geom_count使用实心黑色圆的大小来显示该点附近数据点的个数,并且用图例显示不同大小的圆所对应的点的个数。ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +   geom_count()

    图片

    (4)geom_boxplot() 函数的默认位置调整方式是什么?创建 mpg 数据集的可视化表示来演示一下。

        position = “dodge2”

    ggplot(data = mpg, mapping = aes(x = drv, y = hwy)) +   geom_boxplot()

    图片

    1.9 练习

    (1)使用 coord_polar() 函数将堆叠式条形图转换为饼图。

    ggplot(data = diamonds) +   geom_bar(mapping = aes(x = cut, fill = clarity)) +   coord_polar()

    图片

    (2)labs() 函数的功能是什么?阅读一下文档。

        ?labs

        用于显示标题,标签,图例。

    (3)coord_quickmap() 函数和 coord_map() 函数的区别是什么?

        coord_quickmap() 使用一种更快的近似地图投影。这种近似忽略掉地球的弯曲度并调整经纬度的比例。coord_map() 将3D地图垂直投影到2D平面上,使用的是墨卡托投影。前者更优更快。

    (4)下图表明城市和公路燃油效率之间有什么关系?为什么 coord_fixed() 函数很重要?geom_abline() 函数的作用是什么?

    ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +   geom_point() +   geom_abline() +   coord_fixed()

    图片

    ·cty: city miles per gallon.一加仑油行驶的距离越远,则燃油效率越高。

    ·coord_fixed()坐标系纵横比可以设置固定,纵横比可以用参数ratio自定义,背景为矩形格子,固定纵横比后,无论什么图形,其比例都是一样的,常用于横轴,纵轴都是数字的情况

    ·回归曲线

    PS:如有建议、疑问或错误的地方,请指出,谢谢!

发表时间:2021-06-24 | 评论 () | 复制本页地址 | 打印

相关文章

  • NIO之多线程协作处理数据

    经过前面几章的学习,我们已经 能够掌握了JDK NIO的开发方式,我们来总结一下NIO开发的流程: 创建一个服务端通道 ServerSocketChannel 创建一...

  • 大数据平台构建智慧城市

    城市大数据平台是城市治理架构中数据层的核心,连接着基础设施层与应用层,核心功能是归集、处理、分析城市数据资源,并支撑上层应...