在 R 中绘制顺序(时间序列)数据的子集

2024-04-18

我有一个类似于下面的数据框,称为 df。我想绘制这些数据的子集,例如May 2012 to June 2014。我一直在使用绘图函数来绘制整个数据框,但是,当我将其分成绘图的子集时,无论我选择数据的哪一部分,我都会得到相同的绘图。

     Jan       Feb       Mar       Apr       May       Jun       Jul       Aug       Sep       Oct       Nov       Dec
2011        NA        NA        NA        NA        NA        NA 13.724575 13.670017 13.782099 13.675788 13.442914 13.279969
2012 13.114463 13.021268 12.999545 12.990171 12.898018 12.611495 12.311641 12.126345 11.974871 12.019042 12.163618 12.304660
2013 12.374017 12.365795 12.323280 12.377747 12.462203 12.630298 12.780495 12.848942 12.806210 12.860463 12.838953 12.608965
2014 12.616257 12.720611 12.841626 12.897939 13.008535 13.136377 13.159393 13.290928 13.495218 13.636360 13.797778 13.827273
2015 13.662063 13.527596 13.568430 13.782818 13.889276 13.971303 14.181846 14.329937 14.385533 14.289386 14.222535 14.384618
2016 14.516674 14.759385 14.951384 14.763781 14.536779 13.978265 12.888989 11.612033 10.362592 9.205528  8.649027  8.662219
2017  8.614229  8.446361  8.239606  8.286693  8.498938  8.972903        NA        NA        NA        NA        NA        NA

我当前的代码看起来类似于下面(删除了非必需的内容,例如 x 和 y 标签)。

dates <- seq(as.Date("2011-01-01"), by = "months", length = 84)
plot(dates, df, type = "l")

如何修改它以仅绘制某些部分?

我可以切换到ggplot2也是,但这似乎给了我奇怪的结果,所以我坚持了下来plot()(也许这是因为它是一个时间序列数据框?我不确定)。


您需要获取数据的子集。另外,我会将数据帧的宽格式转换为长格式,这样更容易使用,特别是用于绘图/可视化目的;

#long format with many rows instead of many columns
library(reshape2)
long <- melt(df, id.vars = c("Year")) 

#add a column with actual dates instead year and month in different columns
long$date <- as.Date(with(long,paste(variable,"15",Year,sep = "-")), "%b-%d-%Y")  

#take the subset of the data for May 2012 to June 2014
Date1 <- as.Date("2012-05-01", "%Y-%m-%d")
Date2 <- as.Date("2014-06-30", "%Y-%m-%d")
subdf <- long[long$date < Date2 & long$date > Date1,]

#use ggplot2 as it provides us nice labels and theme for timeseries by default
library(ggplot2)
ggplot(data=subdf, aes(date,value)) + geom_line()

Data:

df <- structure(list(Year = 2011:2017, Jan = c(NA, 13.114463, 12.374017, 
      12.616257, 13.662063, 14.516674, 8.614229), Feb = c(NA, 13.021268, 
      12.365795, 12.720611, 13.527596, 14.759385, 8.446361), Mar = c(NA, 
      12.999545, 12.32328, 12.841626, 13.56843, 14.951384, 8.239606
      ), Apr = c(NA, 12.990171, 12.377747, 12.897939, 13.782818, 14.763781, 
      8.286693), May = c(NA, 12.898018, 12.462203, 13.008535, 13.889276, 
      14.536779, 8.498938), Jun = c(NA, 12.611495, 12.630298, 13.136377, 
      13.971303, 13.978265, 8.972903), Jul = c(13.724575, 12.311641, 
      12.780495, 13.159393, 14.181846, 12.888989, NA), Aug = c(13.670017, 
      12.126345, 12.848942, 13.290928, 14.329937, 11.612033, NA), Sep = c(13.782099, 
      11.974871, 12.80621, 13.495218, 14.385533, 10.362592, NA), Oct = c(13.675788, 
      12.019042, 12.860463, 13.63636, 14.289386, 9.205528, NA), Nov = c(13.442914, 
      12.163618, 12.838953, 13.797778, 14.222535, 8.649027, NA), Dec = c(13.279969, 
      12.30466, 12.608965, 13.827273, 14.384618, 8.662219, NA)), .Names = c("Year", 
      "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
      "Oct", "Nov", "Dec"), class = "data.frame", row.names = c(NA, -7L))

将数据重新整形为长格式:

head(long)

#   Year variable    value       date 
# 1 2011      Jan       NA 2011-01-15 
# 2 2012      Jan 13.11446 2012-01-15 
# 3 2013      Jan 12.37402 2013-01-15 
# 4 2014      Jan 12.61626 2014-01-15 
# 5 2015      Jan 13.66206 2015-01-15 
# 6 2016      Jan 14.51667 2016-01-15
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中绘制顺序(时间序列)数据的子集 的相关文章

随机推荐

  • 将 mongodb 与 neo4j 集成,是否有任何 API 可以链接它们?

    我正在研究推荐引擎 用户数据被收集 他们的友谊 位置 喜欢 教育 并已存储在 mongodb 中 我需要向这些用户推荐相关产品 我计划使用 Neo4j 作为推荐引擎 原因很明显 易于节点之间的遍历 路径信息 问题是我必须首先将 mongod
  • ResultReceiver 给出 Nullpointer 异常

    我正在使用地理编码来检索纬度 经度值的地址 我在扩展 IntentService 的单独类中实现此地理编码 当我检索地址时 我想将其发送回原始主要活动 为此我使用 ResultReciever 并实际上遵循tutorial https de
  • 如何通过HTTP Google Cloud Function上传图像文件?

    我已阅读有关如何将图像上传到存储桶并通过后台功能进行后期处理的教程 但我的要求是上传图像 进行后处理并立即通过HTTP函数返回结果 请让我知道这是否是正确的方法 因为我在网上没有得到太多关于这方面的材料 以下是我的做法 HTTP云功能 ex
  • Github v3 API 让所有组织超过 100

    我正在尝试让所有组织项目通过 默认大小似乎是 30 而 100 似乎是每个请求的最大限制 但上面的链接仍然只返回前 100 项 即不是第 101 200 项 我也尝试过 http host api v3 organizations page
  • 以编程方式截取网页屏幕截图[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • WPF 3D 旋转球体 GUI

    我一直在尝试在 WPF 中为我的课堂作业制作 3D 用户界面 但遇到了一个问题 现在 2 3 天都无法解决 我尝试用谷歌搜索答案 我查看了一些 stackoverflow 帖子 但还没有一个可以帮助我解决问题 情况是这样的 我有一个 3D
  • 如何在 xcode 中打印或查看方法调用堆栈?

    我正在开发我的 iPad 应用程序 运行代码时 表视图中有一种方法 据我们所知 cellForRowAtIndexPath 该方法可以被调用多次 就像一会儿 scrolling table view cells Or table view
  • mysqli_stmt::bind_param():类型定义字符串中的元素数量与绑定变量的数量不匹配,无法更新

    我在提交或更新此数据时遇到问题 数据无法更新 这段代码 if isset GET newsid if isset POST submit sql connect gt prepare UPDATE news set title short
  • Rails:特定 HTTP 错误代码的自定义行为

    我正在开发一个 RoR 网站 希望单独处理服务器错误 400 404 500 等 另外 由于网站是动态的 我想在 Rails 环境中处理错误 而不是在服务器级别 我想做的一个例子是 当用户遇到无法加载或根本不存在的页面或模板时 向用户提供可
  • 从Excel VBA中的单元格范围中删除重复项

    我正在尝试删除 Excel 2013 VBA 中的重复项 但我收到错误 对象不支持此属性或方法 问题是我没有静态范围可供选择 我想从列标题 abcd 中删除重复项 Cells Find what abcd Activate ActiveCe
  • 检查数组中是否存在值(Laravel 或 Php)

    我有这个数组 list desings ids array hc1wXBL7zCsdfMu dhdsfHddfD otheridshere 使用 die var dump 这个数组返回我 array 2 0 gt hc1wXBL7zCsdf
  • Socket.IO中的跨域连接

    是否可以跨域方式使用Socket IO 如果是这样 怎么办 网络上提到了这种可能性 但没有给出任何代码示例 引用socket io 常见问题解答 http socket io faq Socket IO支持跨域连接吗 当然 在每个浏览器上
  • 创建一个加载器,其中线在中心形成一个圆

    这是我的代码 circle border 1px solid transparent border radius 50 width 100px overflow hidden div7 width 100px height 10px bac
  • 正确使用 zend 框架中的语言

    我有一个带有两个模块 管理和公共 的 Zend 应用程序 对于公共 我有以下插件来解析我的友好 URL class Custom Controller Plugin Initializer extends Zend Controller P
  • seq 和 list 之间的区别

    Clojure 语言中的 seq 和列表有什么区别 list 1 2 3 gt 1 2 3 seq 1 2 3 gt 1 2 3 这两种形式似乎被评估为相同的结果 首先 它们可能看起来相同 但实际上并非如此 class list 1 2 3
  • Android 中的文件浏览

    是否有特定的视图 小部件可用于浏览设备上的文件 或者还有其他已被接受的解决方案吗 搜索对我来说有用的信息很少 不幸的是 没有用于浏览文件的特殊视图 小部件 不过自己写也不是很难 谷歌搜索可以找到许多用于文件浏览的公共资源 意图 总体思路很简
  • Episerver - 为什么 BlockData 不实现 IContent

    有谁知道为什么 BlockData 类不直接实现 IContent 我知道在从数据库检索 BlockData 期间 Castle 创建的代理实现了 IContent 如果 StackOverflow 不适合此类问题 请移走它 EPiServ
  • 如何将内容安全策略与本地主机文件一起使用

    我的页面上出现以下错误 Refused to load the script http 127 0 0 1 35729 livereload js because it violates the following Content Secu
  • 在 JTable 中创建鼠标悬停信息面板?工具提示可能还不够

    我想在鼠标悬停时显示一个信息框JTable细胞使用Java 摇摆 所以有多个部分 如何捕获表格单元格中的鼠标悬停事件 我必须能够设置单元格内容 然后获取其数据 如何将鼠标悬停在该单元格上时显示带有动态服务器数据的面板 框 如何缓存信息面板
  • 在 R 中绘制顺序(时间序列)数据的子集

    我有一个类似于下面的数据框 称为 df 我想绘制这些数据的子集 例如May 2012 to June 2014 我一直在使用绘图函数来绘制整个数据框 但是 当我将其分成绘图的子集时 无论我选择数据的哪一部分 我都会得到相同的绘图 Jan F