【问题标题】:Plotting in R for each level or category在 R 中为每个级别或类别绘制
【发布时间】:2018-03-29 04:50:14
【问题描述】:

我有一个数据集,其中包含按国家和年份列出的儿童死亡人数 (cdeaths) 数据。如何为每个国家/地区生成单独的散点图(按年份计算),而无需手动进行?我有 186 个国家/地区,所以我想知道是否有办法通过因素来做到这一点。

数据集是这样的

country     year    cdeaths 
Afghanistan 2015    50.5  
Afghanistan 2014    45.2  
Afghanistan 2011    39.9  
Afghanistan 2011    38.6  
Afghanistan 2010    34.3  
Afghanistan 2008    24  
Afghanistan 2006    19  
Afghanistan 2003    14.3  
Afghanistan 2002    15  
Afghanistan 1999    15  
Barbados    2015    99  
Barbados    2014    99.7   
Barbados    2013    98.6  
Barbados    2012    98.9  
Barbados    2012    100  
Barbados    2011    100  
Barbados    2008    100  
Barbados    2007    100  
Barbados    2006    100  
Barbados    2005    100    
Barbados    2004    100  
Barbados    2003    100  
Barbados    2002    100  
Barbados    2000    98  
Barbados    1999    91  
Barbados    1995    100  
Cambodia    2014    89  
Cambodia    2011    71.7  
Cambodia    2010    71  
Cambodia    2009    63  
Cambodia    2008    58  
Cambodia    2005    43.8  
Cambodia    2004    16.3  
Cambodia    2000    31.8  
Cambodia    1998    34  
Cambodia    1995    43.3  
Denmark 2016    94.4  
Denmark 2015    95.4  
Denmark 2014    95.9  
Denmark 2013    96.3  
Denmark 2012    98.2    
Denmark 2011    98.5  
Denmark 2010    98.5  
Denmark 2009    98.7  
Denmark 2007    97.8  
Denmark 2006    98.7  
Denmark 2005    98.8  
Denmark 2004    98.6  
Denmark 2003    98.9  
Denmark 2002    98.8  
Denmark 2001    98.9  
Denmark 2000    98.8  
Denmark 1999    98.7  
Denmark 1998    98.8  
Denmark 1997    98.3  
Estonia 2016    99.4  
Estonia 2015    99.5  
Estonia 2014    99.4  
Estonia 2013    99.4    
Estonia 2012    99.3  
Estonia 2011    99.4  
Estonia 2010    99.3  
Estonia 2009    99.2    
Estonia 2008    99.3  
Estonia 2007    99.4    
Estonia 2006    99.5  
Estonia 2006    99.8    
Estonia 2005    99.6  
Estonia 2005    99.8  
Estonia 2004    99.7  
Estonia 2004    99.8  
Estonia 2003    99.4  
Estonia 2003    99.7  
Estonia 2002    99.5  
Estonia 2002    99.6  
Estonia 2001    99.6  
Estonia 2001    99.7  
Estonia 2000    99.5  
Estonia 2000    99.7  
Estonia 1999    99.5    
Estonia 1999    99.6  
Estonia 1998    99.5    
Estonia 1998    99.6  
Estonia 1997    99.3  
Estonia 1997    99.5  
Estonia 1996    99.4  
Estonia 1996    99.6  
Estonia 1995    99.3  
Estonia 1995    99.5  
Estonia 1994    99.1  
Estonia 1994    99.3  
Estonia 1993    99.1  
Estonia 1993    99.1  
Estonia 1992    98.9  
Estonia 1992    99  
Gabon   2012    89.3  
Gabon   2000    85.5  

附上我想要的输出图片。

【问题讨论】:

  • 请提供您的数据样本,格式便于我们将其剪切并粘贴到我们的 R 会话中,以使其可重现。谢谢:)
  • 数据集有3列:国家、年份、死亡人数
  • 仍然需要有代表性的数据样本,可能只有几个国家。数据框的图像没有用,因为没有人想重新输入您的所有数据。如果您可以轻松开始解决问题,很多人会想要帮助:) 此外,使用您的数据,我们可以避免诸如为错误的数据类型或数据结构提供解决方案等问题。
  • 哦!我明白!抱歉,我刚刚对 stackoverflow 和学习 r 很陌生。将尽快提供样品

标签: r plot categories factors levels


【解决方案1】:

给你:

> library(dplyr)
> library(tibble)

> lisa <- read.table("D:/R/SO/lisa.txt",header=TRUE) # my path
> df <- as.tibble(lisa) 
> df
# A tibble: 97 x 3
   country      year   sab
   <fct>       <int> <dbl>
 1 Afghanistan  2015  50.5
 2 Afghanistan  2014  45.2
 3 Afghanistan  2011  39.9
...etc
# ... with 87 more rows

您可以在ggplot2 中使用facet_wrap 做您想做的事情:

> df %>% group_by(country) %>% 
         ggplot(aes(x=year,y=sab)) + geom_point() + 
         facet_wrap(~country)

它产生这个:

我实际上并没有为具有 100 多个分类变量值的数据集执行此操作,因此不确定它会如何扩展。网上有很多资源可以帮助您调整 ggplot2 参数……请记住,它就像 Photoshop……您总是需要分层思考。希望这会有所帮助!

【讨论】:

  • 嗨!快速提问。我已经安装了包“dplyr”,但是还是报错:找不到函数“%>%”
  • 如果发生这种情况,请尝试安装 magrittr - 当您安装和加载 tidyverse 时它会免费提供,但我注意到有时我必须自己加载它。
  • group_by 怎么样?哪个图书馆负责它?错误信息:group_by(., country) : 找不到函数“group_by”
  • dplyr 中也应该与tidyverse 一起提供
  • 只要确保管道%&gt;% 之后的所有变量与df 中的变量名称完全匹配。
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2021-03-28
  • 2015-07-13
  • 2016-10-07
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
相关资源
最近更新 更多