【发布时间】:2020-02-04 09:12:49
【问题描述】:
更新帖子
经过大量的工作,我终于合并了三个不同的数据集。结果是一个时间序列数据框,包含 7 个 7 个变量的 43,396 个观测值。下面,我包含了几行我的数据的样子。
Dyad year cyberattack cybersev MID MIDsev peace score
2360 2005 NA NA 0 1 0
2360 2006 NA NA NA NA 0
2360 2007 1 3.0 0 1 0
2360 2008 1 4.0 0 1 0
2360 2009 3 3.33 1 4 0
2360 2010 1 3.0 NA NA 0
2360 2011 3 2.0 NA NA 0
2360 2012 1 2.0 NA NA 0
2360 2013 4 2.0 NA NA 0
如果我有兴趣比较不同国家对 (dyads) 在发动攻击的频率方面有何不同(在网络空间中,在物理上使用 MID,或者两者都没有)...我应该怎么做?
由于我使用的是国家/年数据,如何在我的 Dyad 变量中获取不同国家 (Dyads) 的描述性统计数据?例如,我想知道 Dyad 2360(美国和伊朗)的行为与其他国家相比如何。
我尝试了这段代码,但它只是给了我一个我独特的 dyad 对的列表:
table(final$Dyadpair)
names(sort(-table(final$Dyadpair)))
您提到使用 aggregate 或 dplyr - 但我不明白这些将如何让我为我所有独特的 dyads 进行描述性统计?您介意详细说明一下吗?
代码是否有可能返回如下内容:对于 2005-2013 年间的 Dyad 2360,80% 是 NA,10% 是网络攻击,10% 是 MID 攻击,等等?
更新澄清:
好的,是的 - 上面的例子只是假设性的。基于我提供的九行数据 - 这是我希望 R 在描述性统计方面能够提供的内容。
二元:2360 无攻击:22.22% (2/9) ….2005 年和 2006 年
网络攻击:77.78% (7/9) ….2007-2013 年
MID 攻击:11.11% (1/9) ….in 2009
网络和 MID:11.11% (1/9) ….in 2009
基本上,在给定的时间范围内(我上面给出的示例为 2005-2013 年),其中有多少年没有发生攻击,有多少年导致网络攻击,有多少年导致MID 攻击,以及其中有多少年导致网络和 MID 攻击。
我不知道这是否可能与我的数据设置方式有关 —> 因为我每年汇总网络攻击和 MID 攻击?是的,我还想考虑攻击的严重性(网络攻击和 MID 攻击),但我不知道该怎么做。
这是否有助于澄清我在寻找什么?
【问题讨论】:
-
merge时,可以设置参数all = TRUE保留所有记录。对于其余部分,“如何理解我的数据,以便在论文和演示文稿中出现”过于宽泛。 Stack Overflow 是针对特定的、可回答的编程问题——这是一个关于数据分析和通信的一般性、开放式问题。 -
一些一般性建议 - 您已经发现了一些弱点,例如
NA的使用不一致、不同的评分量表等。这些是否会导致问题以及导致问题的程度取决于您如何分析它们,但是一致性很好,通常会使事情变得更好。我建议 (a) 始终使用NA来表示缺失值,而不是 0,(b) 使用一致的尺度——1对我来说是一种非严重攻击,0是没有攻击,并且NA作为“我们不知道”。将数据转换为 (a) 和 (b) 可能是一个好主意。并在汇总并取平均值之前这样做。 -
关于获取独特二元组的描述性统计数据,您已经在使用的基础 R
aggregate是一个很好的工具。您必须通过“他们发起网络攻击的时间百分比”来准确定义您的意思 - 也许您的意思是 所有攻击中网络攻击的百分比,或者您的意思是 包含网络攻击的攻击年份百分比,或者您的意思可能是别的。虽然aggregate在基础 R 中很好,但您可能会发现dplyr更强大,here's a nice introduction。 -
你好,@Gregor。感谢您的反馈意见。我用更具体的问题更新了我的帖子。
-
@Gregor 另外,将“all = TRUE”添加到我的合并代码中,工作正常。谢谢你。如果你能看看我更新的帖子,我将不胜感激。
标签: r time-series