将数据框转换为每月时间序列

2023-11-22

我有一个 100 年每月数据(1200 个数据点)的数据框,其中月份在列中,年份在行中。我想将其转换为每月的时间序列,并且我尝试了多种方法,但没有一种方法可以创建正确的“时间”结构。

问题在于 R 将数据框视为 12 个变量(月份)的 100 个观测值(年)。这是我最近尝试的可重现代码:

set.seed(12)
dummy.df <- as.data.frame(matrix(round(rnorm(1200),digits=2),nrow=100,ncol=12))
rownames(dummy.df) <- seq(from=1901, to=2000)
colnames(dummy.df) <- c("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec")
dummy.df.ts <- ts(as.vector(as.matrix(dummy.df)), start=c(1901,1), end=c(2000,12), frequency=12)

在“dummy.df.ts”对象中,行和列被切换,并且所有一月、二月等都一个接一个地堆叠在一起,而不是按列顺序观察。如何获得正确的时间结构?

我的数据示例:这些是 1901 年至 1905 年的每月温度值

fr.monthly.temp.sample  

     JAN FEB MAR  APR  MAY  JUN  JUL  AUG  SEP  OCT NOV DEC  
1901 2.7 0.4 4.7 10.0 13.0 16.9 19.2 18.3 15.7 10.6 4.9 3.5  
1902 4.1 3.2 7.5 10.3 10.0 15.1 18.2 17.4 15.0 10.2 6.3 3.5  
1903 3.8 5.9 7.6  7.1 12.9 14.9 17.6 17.3 15.5 12.1 6.9 2.7  
1904 3.0 4.6 5.5 10.3 13.6 16.3 20.2 18.5 13.9 11.2 5.4 4.8  
1905 1.7 4.0 7.4  9.3 11.9 16.5 20.0 17.6 14.7  8.4 5.5 3.8  

Plot of original time series

通过使用 ts() 调用:

fr.monthly.temp.sample.ts <- ts(as.vector(as.matrix(fr.monthly.temp.sample)),                              start=c(1901,1), end=c(1905,12), frequency=12)

这是我得到的时间序列对象的输出:

fr.monthly.temp.sample.ts  

      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec  
1901  2.7  4.1  3.8  3.0  1.7  0.4  3.2  5.9  4.6  4.0  4.7  7.5  
1902  7.6  5.5  7.4 10.0 10.3  7.1 10.3  9.3 13.0 10.0 12.9 13.6  
1903 11.9 16.9 15.1 14.9 16.3 16.5 19.2 18.2 17.6 20.2 20.0 18.3  
1904 17.4 17.3 18.5 17.6 15.7 15.0 15.5 13.9 14.7 10.6 10.2 12.1  
1905 11.2  8.4  4.9  6.3  6.9  5.4  5.5  3.5  3.5  2.7  4.8  3.8  

Plot of time series from R code

--注意更改的时间结构(列中的值现在位于行中..)--

Thanks.


解决方案1

你可以转置(函数t()) 向量化之前的矩阵:

set.seed(12)
dummy.df <- as.data.frame(matrix(round(rnorm(1200), digits = 2),
                                 nrow = 100, ncol = 12))
rownames(dummy.df) <- seq(1901, 2000)
colnames(dummy.df) <- month.abb
dummy.df.ts <- ts(as.vector(t(as.matrix(dummy.df))), 
                  start=c(1901,1), end=c(2000,12), frequency=12)

解决方案2

你可以melt数据,按日期排序,然后应用 ts() 函数。

这是数据设置。如果您的语言设置是英语,您可以使用 Month.abb 保存一些代码,但这对于其他语言区域设置来说并不稳健。

set.seed(12)
dummy.df <- as.data.frame(matrix(round(rnorm(1200),digits=2),nrow=100,ncol=12))
months <- format(seq.Date(as.Date("2013-01-01"), as.Date("2013-12-01"), 
                          by = "month"), format = "%b")
colnames(dummy.df) <- months
dummy.df$Year <- seq(1901, 2000) # set as variable, not as rownames 

融合数据,这样您就有一个包含 1200 行的数据框,每行代表一个观察结果:

library("reshape2")
dummy.df <- melt(dummy.df, id.vars = "Year")

按日期对观察结果进行排序:

dummy.df$Date <- as.Date(paste(dummy.df$Year, dummy.df$variable, "01", sep = "-"),
                         format = ("%Y-%b-%d"))
dummy.df <- dummy.df[order(dummy.df$Date), ]

然后您可以应用类似的 ts() 调用,其中 ts 对象显示所需的顺序:

dummy.df.ts <- ts(dummy.df$value, start=c(1901,1), end=c(2000,12), frequency=12)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据框转换为每月时间序列 的相关文章

  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 在 DataFrame.withColumn 中,如何检查列的值是否为 null 作为第二个参数的条件?

    如果我有一个名为 df 的 DataFrame 如下所示 a1 a2 foo bar N A baz null etc 我可以有选择地替换值 如下所示 val df2 df withColumn a1 when a1 N A a2 这样 d
  • 如何在不使用外部库(如Numpy、Pandas)的情况下读取CSV文件?

    这是面试中经常出现的问题 我知道如何使用读取 csv 文件Pandas 然而 我正在努力寻找一种在不使用外部库的情况下读取文件的方法 Python 是否带有任何可以帮助读取 csv 文件的模块 你最有可能将需要用于读取 CSV 文件的库 虽
  • 如何从R arrow中的feather文件中读取列名和元数据?

    现已取代 独立R 的羽毛库 https github com wesm feather有一个函数叫做feather metadata 允许从磁盘上的羽毛文件中读取列名称和类型 而无需打开它们 当在 R 中加载羽毛文件时 这对于仅选择特定列很
  • 检查单词是否存在于英语词典 r 中

    我正在对多个进行一些文本分析resume生成一个wordcloud using wordcloud包装连同tm用于在 R 中预处理文档语料库的包 我面临的问题是 检查语料库中的单词是否具有某种含义 即 它属于英语词典 如何一起挖掘 处理多份
  • 如何匹配R中列之间的多个对应值

    我有一个结构如下的数据框 ID Value1 Value2 1 a d g f 12 14 15 9 2 b c e 5 18 20 3 h i j 6 7 25 所以我有一个 ID 和两个值 对于值 1 有多个对应于值 2 的选项 我想最
  • 2 列 pandas 上的地图

    我有一个数据框 如下所示 Col1 Col2 0 A PY 1 B PA 2 C PB 3 B PB 以及这个系列 Value Col1 Col2 A PY 20 B PB 30 我想做一个映射 如果该系列有一个索引 仅前 Col1 那么它
  • R Tidytext 和 unnest_tokens 错误

    对 R 非常陌生 已经开始使用 tidytext 包 我正在尝试使用参数来填充unnest tokens函数 这样我就可以进行多列分析 所以而不是这个 library janeaustenr library tidytext library
  • R - Quantstart:多种股票的测试策略

    我正在使用一些指标构建基本交易策略 我的问题是我希望它在多个股票上运行 而不必指定我想要测试的每个单独的股票 目前我可以使用向量一次获取多个符号 如下所示 Get Shares from Yahoo Finance Stocks lt AS
  • 使用许多特殊字符将 R 连接到 HANA 数据库时出现问题

    我在将 HANA 数据读入 R 时遇到问题 我已通过以下方式建立了连接 ch lt odbcConnect HANA uid USER pwd PW 并确认我已通过以下方式连接 sqlTables ch 这会调出我的表格列表 对我想要拉取的
  • 在Python中创建一个新表

    我正在尝试从数控机床中提取数据 事件每毫秒发生一次 我需要过滤掉一些用管道 分隔的变量分隔符 PuTTy exe 程序生成的日志文件 我尝试阅读熊猫 但列不在同一位置 df pd read table data log sep 日志文件的一
  • 根据R中的前一行和当前行按组计算

    我可以根据 R 中的前一行和当前行进行计算 对于此数据框 df A B 1 2 2 2 2 3 3 4 5 5 B2 A2 0 5 B1 我可以使用这段代码来计算这个函数 for i in 2 nrow df B i lt 1 2 B i
  • 如何在 Scala 中将 DataFrame 模式写入文件

    我有一个 DataFrame 它从一个巨大的 json 文件加载并从中获取架构 该架构基本上大约有 1000 列 我希望将 printSchema 的相同输出保存在文件中而不是控制台中 有任何想法吗 如果您在本地环境中工作 您可以执行以下操
  • 使用 purrr、broom 从许多单变量模型中获得整洁的输出

    我有一个由二进制结果列组成的数据框 y 和多个独立的预测列 x1 x2 x3 我想运行许多单变量逻辑回归模型 例如y x1 y x2 y x3 并将每个模型的指数系数 比值比 95 置信区间和 p 值提取到数据框 标题的行中 在我看来 使用

随机推荐

  • Java中的双倍增量[重复]

    这个问题在这里已经有答案了 可能的重复 如何在Java中以0 1f增量在0 1f和1 0f之间迭代 我的程序的一部分需要在 while 循环内使用值 如下所示 0 1 0 2 0 3 0 9 所以我需要在该循环内提供它们 这是代码 doub
  • NetworkCredential UseDefaultCredentials 不起作用

    我们很久以前就编写了一段代码来使用域凭据调用服务 现在域已更改并计划使用默认 Windows 帐户 所以我试图通过配置重置 asmx web 服务的网络凭据 我创建了一个 SoapExtentsion 类并尝试覆盖那里 即使它执行该行 但它
  • 如何将数据从 Express 服务器传递到反应视图?

    我有一个简单的 Express 服务器 连接到 orientdb 数据库 我需要将信息从 Express 传递到 React 视图 例如 在快递中我有 router get function req res next Vertex getF
  • 创建新Socket时添加超时

    我有一个带有 DHCP 的本地网络和几台 PC 其中之一应该是我的服务器 并自动连接到所有其他服务器 客户端 我的想法是这样的 首先 我在每个客户端 CServer 上创建一个服务器 用于侦听来自服务器 SClient 的客户端程序 当SC
  • java.net.SocketException:软件导致连接中止:recv 失败

    我无法找到以下错误的确切含义的适当答案 java net SocketException Software caused connection abort recv failed Notes 这种错误很少发生且不可预测 尽管出现此错误意味着
  • 在 Angularfire2 中“加入”Firebase 查询

    Update 我遇到的空值字段问题与数据库中不存在的键有关 因此这里的大部分讨论不适用于您的问题 如果您正在寻找一种在 AngularFire2 中 加入 查询的方法 下面接受的答案可以很好地做到这一点 我目前正在使用combineLate
  • 如何从AWS lambda java中的类路径加载属性文件

    我编写了 AWS lambda 函数 因为我想从属性文件和类路径中读取数据库连接详细信息 但我无法加载该文件 这是我的代码 InputStream input DBConfiguartion class getResourceAsStrea
  • 返回无效(0);与返回;中断功能[重复]

    这个问题在这里已经有答案了 我遇到了一些中断函数的代码return void 0 我相信这将被用来返回undefined但这可以简单地通过写来完成return Does return void 0 有一个额外的目的 或者这只是中断函数的两种
  • 使用 Azure Functions 3.0 中的属性将 Enum 序列化为字符串

    我尝试在 Azure Functions 3 0 3 1 应用程序中获取 HTTP 触发器来返回枚举的字符串表示形式 但没有任何运气 我已经尝试过 Core 3 0 和 Core 3 1 给定这个类 public enum TestEnum
  • SharedPreferences 何时被删除?

    SharedPreferences 类允许以简单类型 布尔值 字符串等 格式保存应用程序数据 通常它们不会被删除 并且应该持续存在 但是在更新 删除应用程序或清除应用程序缓存等情况下它们是否会被删除 当你这样做时clear data从设备应
  • 使用 SqlBulkCopy 时如何检索服务器生成的标识值

    我知道我可以通过不指定身份列来批量插入到我的表中SqlBulkCopyOptions KeepIdentity如上所述here 我希望能够做的是获取服务器生成的标识值并将它们放入我的数据表 甚至列表中 我看见this发布 但我希望我的代码是
  • SQL Server 加入顺序

    我在输入中有 2 个字符串 例如 1 5 6 和 2 89 9 具有相同数量的元素 3 或以上 我想要的那两个字符串作为 纵坐标连接 1 2 5 89 6 9 我想分配一个行号并在 2 个结果集之间进行连接 SELECT a item b
  • 在 Java 中如何确定区域设置使用 12 小时还是 24 小时时间?

    在Java中 我只想打印一天中的时间 以小时和分钟为单位 并希望它根据区域设置在 13 00 和 1 00 PM 之间正确切换 我该怎么做呢 区域设置未明确指定首选 12 小时时间格式还是 24 小时时间格式 相反 区域设置特定的日期格式由
  • 将整数转换为 MIPS 中的双精度数

    我想将其中的两个值相除 tn寄存器 我必须将这两个值相除才能得到双倍结果 但是该函数div只返回该除法的整数部分有人可以帮忙吗 我需要转换吗 t1 and t2 to f0 and f2 我怎么做 li t1 2 li t2 5 div f
  • hbm.xml 中映射的属性可以是暂时的吗?

    假设我有一个User像这样的实体 class User private String login transient private String hashedPassword 我永远不想转移hashedPassword给客户 所以我把它变
  • 控制 Android 上的用户语言

    我有一个多语言应用程序 我想让用户能够控制使用哪种语言 这意味着即使他有英语区域设置 如果他愿意 他也可以使用不同的语言 如何更改区域设置语言 每个应用程序 Android 不提供更改应用程序区域设置的方法 它是在全系统一级完成的 我认为这
  • 如何调试缓慢的 Office 应用程序互操作构造函数?

    我有一个处理 Excel 的应用程序 最近我遇到了创建 Excel 对象非常慢的问题 我用这个简单的代码重新创建了这个问题 Microsoft Office Interop Excel Application xlApp xlApp new
  • 使用值绑定分配的依赖属性不起作用

    我有一个带有依赖属性的用户控件 public sealed partial class PenMenu UserControl INotifyPropertyChanged public event PropertyChangedEvent
  • 一组元素中具有最大高度的元素

    我有一套div元素 在jQuery 我希望能够找出div最大高度以及该高度div 例如 div div class panel Line 1 Line 2 div div class panel Line 1 br Line 2 br Li
  • 将数据框转换为每月时间序列

    我有一个 100 年每月数据 1200 个数据点 的数据框 其中月份在列中 年份在行中 我想将其转换为每月的时间序列 并且我尝试了多种方法 但没有一种方法可以创建正确的 时间 结构 问题在于 R 将数据框视为 12 个变量 月份 的 100