如何从R中的数据帧中提取纵向时间序列数据,用于时间序列分析和插补

如何从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

感谢您帮助我将数据分组,我希望将R中的数据框缩小,以便对数据进行时间序列分析

现在我想进一步从数据帧中提取数据。数据帧由6列组成。第1列到第5列各有独立的名称/值,例如地区、性别、年份、月份和年龄组。第六列是该特定组合的死亡人数。摘录如下所示:

             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