group by 会让数据变少怎么办_R数据科学|5.5.2内容介绍及课后习题解答

5.5.2 两个分类变量

要想对两个分类变量间的相关变动进行可视化表示,需要计算出每个变量组合中的观测数量。常用的两种方法有:

  • 使用内置的geom_count() 函数:
 ggplot(data = diamonds) +
 geom_count(mapping = aes(x = cut, y = color))

【注】图中每个圆点的大小表示每个变量组合中的观测数量。相关变动就表示为特定 x 轴变量值与特定 y 轴变量值之间的强相关关系。d3703c55856dfb1a0cbfe5b50f792504.png

  • 使用dplyr
diamonds %>%
 count(color, cut)
#> Source: local data frame [35 x 3]
#> Groups: color [?]
#>
#> color cut n
#>   
#> 1 D Fair 163
#> 2 D Good 662
#> 3 D Very Good 1513
#> 4 D Premium 1603
#> 5 D Ideal 2834
#> 6 E Fair 224
#> # ... with 29 more rows

接着使用geom_tile()函数和填充图形属性进行可视化表示:

diamonds %>%
 count(color, cut) %>%
 ggplot(mapping = aes(x = color, y = cut)) +
 geom_tile(mapping = aes(fill = n))

【注】如果分类变量是无序的,那么可以使用seriation包对行和列同时进行重新排序,以便更清楚地表示出有趣的模式。对于更大的图形,你可以使用d3heatmapheatmaply包,这两个包都可以生成有交互功能的图形。e9fcb05b5fd3cad0dc8276731882daff.png

5.5.2 习题解答

问题一

如何调整count数据,使其能更清楚地表示出切割质量在颜色间的分布,或者颜色在切割质量间的分布?

解答

为了清楚地显示切割质量在颜色内的分布,可以引入一个新的变量prop,即每个切割在颜色内的比例。

diamonds %>%
  count(color, cut) %>%
  group_by(color) %>%
  mutate(prop = n / sum(n)) %>%
  ggplot(mapping = aes(x = color, y = cut)) +
  geom_tile(mapping = aes(fill = prop))
b53ff366f85456a7afc7a9c1a61fe001.png

同理可计算颜色在切割质量间的分布:

diamonds %>%
  count(color, cut) %>%
  group_by(cut) %>%
  mutate(prop = n / sum(n)) %>%
  ggplot(mapping = aes(x = color, y = cut)) +
  geom_tile(mapping = aes(fill = prop))
19f28aba5ad8454ed0a4deb43eee4d03.png

问题二

使用geom_tile()函数结合 dplyr 来探索平均航班延误数量是如何随着目的地和月份的变化而变化的。为什么这张图难以阅读?如何改进?

解答

flights %>%
  group_by(month, dest) %>%
  summarise(dep_delay = mean(dep_delay, na.rm = TRUE)) %>%
  ggplot(aes(x = factor(month), y = dest, fill = dep_delay)) +
  geom_tile() +
  labs(x = "Month", y = "Destination", fill = "Departure Delay")
#> `summarise()` regrouping output by 'month' (override with `.groups` argument)
b3d5fd3eca69c3630886f4adb412ff4a.png

从上图可以发现存在缺失值,因此可以通过删除缺失值来改进:

flights %>%
  group_by(month, dest) %>%                                 # This gives us (month, dest) pairs
  summarise(dep_delay = mean(dep_delay, na.rm = TRUE)) %>%
  group_by(dest) %>%                                        # group all (month, dest) pairs by dest ..
  filter(n() == 12) %>%                                     # and only select those that have one entry per month 
  ungroup() %>%
  mutate(dest = reorder(dest, dep_delay)) %>%
  ggplot(aes(x = factor(month), y = dest, fill = dep_delay)) +
  geom_tile() +
  labs(x = "Month", y = "Destination", fill = "Departure Delay")
#> `summarise()` regrouping output by 'month' (override with `.groups` argument)
5f312676e219810a19dd0854094eb8f3.png

问题三

为什么在以上示例中使用aes(x = color, y = cut)要比aes(x = cut, y = color)更好?

解答

更好的做法是使用带有更多类别的分类变量,或者在y轴上较长的标签。如果可能的话,标签应该是水平的,因为这样更容易阅读。并且,切换顺序不会导致标签重叠。

diamonds %>%
  count(color, cut) %>%
  ggplot(mapping = aes(y = color, x = cut)) +
  geom_tile(mapping = aes(fill = n))
12aff51411a534bdadc2a4bffbad60dd.png

往期推荐

R数据科学|5.5.1 内容介绍

R数据科学|5.5.1 习题解答

R数据科学|5.4内容介绍及习题解答

R数据科学|5.3内容介绍

R数据科学|5.3课后习题解答

R数据科学|3.7内容介绍及习题解答

R数据科学|3.6习题解答

R数据科学|3.6内容介绍

R数据科学|3.5内容介绍及习题解答

R数据科学|3.4内容介绍及习题解答

R数据科学|3.3课后习题

R数据科学|3.2.4课后习题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
清华大学出品的R语言全套课程PPT学习课件,非常适合大学生和职场人士学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~ (1)清华大学精品数据科学R语言全套课程PPT课件含习题(26页) 第1章 R语言绪论(1) (2)清华大学精品数据科学R语言全套课程PPT课件含习题(27页) 第2章 R语言入门 (3)清华大学精品数据科学R语言全套课程PPT课件含习题(53页) 第3章 数据模型 (4)清华大学精品数据科学R语言全套课程PPT课件含习题(15页) 第4章 数据准备 (5)清华大学精品数据科学R语言全套课程PPT课件含习题(66页) 第5章 数据可视化 (6)清华大学精品数据科学R语言全套课程PPT课件含习题(35页) 第6章 数据探索 (7)清华大学精品数据科学R语言全套课程PPT课件含习题(38页) 第7章 数据变换 (8)清华大学精品数据科学R语言全套课程PPT课件含习题(20页) 第8章 高级编程 (9)清华大学精品数据科学R语言全套课程PPT课件含习题(63页) 第9章 数据建模 (10)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第10章 数据评估 (11)清华大学精品数据科学R语言全套课程PPT课件含习题(21页) 第11章 影响大学平均录取分数线因素分析 (12)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第12章 收视率分析 (13)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第13章 RHadoop (14)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第14章 Rspark
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值