如何从R中的数据帧中提取纵向时间序列数据,用于时间序列分析和插补
感谢您帮助我将数据分组,我希望将R中的数据框缩小,以便对数据进行时间序列分析 现在我想进一步从数据帧中提取数据。数据帧由6列组成。第1列到第5列各有独立的名称/值,例如地区、性别、年份、月份和年龄组。第六列是该特定组合的死亡人数。摘录如下所示:如何从R中的数据帧中提取纵向时间序列数据,用于时间序列分析和插补,r,statistics,time-series,R,Statistics,Time Series,感谢您帮助我将数据分组,我希望将R中的数据框缩小,以便对数据进行时间序列分析 现在我想进一步从数据帧中提取数据。数据帧由6列组成。第1列到第5列各有独立的名称/值,例如地区、性别、年份、月份和年龄组。第六列是该特定组合的死亡人数。摘录如下所示: District Gender Year Month AgeGroup TotalDeaths Northern Male 2006 11 01-4
District Gender Year Month AgeGroup TotalDeaths
Northern Male 2006 11 01-4 0
Northern Male 2006 11 05-14 1
Northern Male 2006 11 15+ 83
Northern Male 2006 12 0 3
Northern Male 2006 12 01-4 0
Northern Male 2006 12 05-14 0
Northern Male 2006 12 15+ 106
Southern Female 2003 1 0 6
Southern Female 2003 1 01-4 0
Southern Female 2003 1 05-14 3
Southern Female 2003 1 15+ 136
Southern Female 2003 2 0 6
Southern Female 2003 2 01-4 0
Southern Female 2003 2 05-14 1
Southern Female 2003 2 15+ 111
Southern Female 2003 3 0 2
Southern Female 2003 3 01-4 0
Southern Female 2003 3 05-14 1
Southern Female 2003 3 15+ 141
Southern Female 2003 4 0 4
我不熟悉时间序列,我想我需要这样做来分析数据:我需要提取较小的“时间序列”数据对象,这些对象是唯一的纵向数据。例如,从上述数据框中,我想为每个地区、性别和年龄组提取如下较小的数据对象:
District Gender Year Month AgeGroup TotalDeaths
Northern Male 2003 1 01-4 0
Northern Male 2003 2 01-4 1
Northern Male 2003 3 01-4 0
Northern Male 2003 4 01-4 3
Northern Male 2003 5 01-4 4
Northern Male 2003 6 01-4 6
Northern Male 2003 7 01-4 5
Northern Male 2003 8 01-4 0
Northern Male 2003 9 01-4 1
Northern Male 2003 10 01-4 2
Northern Male 2003 11 01-4 0
Northern Male 2003 12 01-4 1
Northern Male 2004 1 01-4 1
Northern Male 2004 2 01-4 0
去
Northern Male 2006 11 01-4 0
Northern Male 2006 12 01-4 0
我在Excel中尝试了一些方法,用这些数据创建透视表,然后尝试提取信息字符串,但失败了。之后,我在R中发现了reformate
,但我要么不知道代码,要么可能不应该使用reformate
我甚至不确定这是否是分析这一横截面时间序列数据的正确方法,也就是说,是否确实需要另一种格式来分析这些数据,并使用诸如read.ts()
、ts()
和arima()
等函数
我的最终目标是使用这些数据和amelia2
软件包及其功能,对2007年和2008年某些月份的totaldeatures
缺失进行插补,当然,这些月份的数据缺失
感谢您提供的任何帮助、如何做到这一点以及关于如何解决此问题的建议。对于如何最好地提取以下内容的狭义问题:
subset(dfrm, subset=(District=="Northern" & Gender=="Male" & AgeGroup=="01-4"))
subset
还有一个select参数来缩小列的范围。我怀疑对您使用的术语“extract”进行搜索只会找到?extract页面的点击率,该页面竟然没有指向子集的链接。(我从早期版本的AgeGroup规范中删除了一个尾随空格。)@osioso。你计划进行什么样的时间序列分析。查看plm
软件包。我相信如果你把所有的东西都保存在一个单一的数据中,分析会更容易进行。如果你提供更多关于你的分析的细节,我们中的一些人可能会help@Ramnath,可能我使用的“时间序列分析”不正确。我基本上想用2003-2009年的数据(2007年和2008年的一些月份缺少数据)来估算2007和2008年缺少的月份。为此,我无法不使用任何R函数来观察总体死亡的季节性和长期趋势。感谢您指出plm-我更愿意说数据是一个面板数据研究。我现在的问题是,如何使用这个“单一数据”——并将其读入R——进行任何时间序列分析。希望这能澄清。通常情况下(从Stackoverflow上的所有其他时间序列问题来看),时间序列数据只包含一系列日期和数字,例如in-而不是我的数据框。@osioso。我还是不明白你问题的最终目的。插补非常棘手,在时间序列中更是如此。估算缺失的值是我们的最终目标吗?或者你是否计划使用估算数据进行其他分析?我建议你在问题中澄清这一点。如果您试图做的事情在统计上存在明显的偏差,那么stats.stackexchange
可能是发布此信息的更好地方。@osioso。正如您正确指出的,您拥有的是面板数据。您可以将数据框架中的额外变量视为解释变量,可以解释您试图研究的时间序列中的一些系统性变化。谢谢@DWin的帮助。实际上,我以前曾尝试使用子集
——但由于不断出现错误,我停止了尝试。出于某种原因,我得到了与之前相同的错误:[1]地区性别年月年龄组总死亡人数(或0长度的行.名称)
我尝试了其他组合,例如使用“Eastern”作为地区和“Female”,但它继续给出上述输出。您可能知道它为什么不起作用吗?上面年龄组规范中的尾随空格可能与变量的拼写不匹配。看看修剪是否有帮助。呃,我还是有问题。我已经成功地使用了子集
,但是当我在子集公式中包含地区
时,它会给出错误(或0长度的row.names)
。即。这是有效的:head(子集(data0306t,Year==“2004”&Month==“8”&Age.Group==“0”)
但不是这个head(子集(data0306t,District==“Eastern”&Age.Group==“0”)
这不是一个错误,只是一个0行数据.frame。请注意“年龄组”列的拼写与您发布的不同。。。因此,您需要发布类似于str()
或dput(head(data0306t))
之类的内容。这些内容仍然不起作用。我会尝试其他选择。我要确保所有内容、拼写和特定数据帧(因为我有不同的数据帧具有相同的数据)都是正确的。但是谢谢你的帮助@DWin