r语言 - 理解具有 43,000 个观测值>的时间序列数据



更新帖子

经过大量工作,我终于合并了三个不同的数据集。结果是一个时间序列数据框,其中包含 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

如果我有兴趣比较不同国家对(二元(在发动攻击的频率上有何不同(无论是在网络空间,还是在物理上使用 MID,或者两者都不是(......我应该怎么做?

由于我正在使用国家/年份数据,因此如何在 Dyad 变量中获取不同国家/地区 (Dyads( 的描述性统计数据?例如,我想知道 Dyad 2360(美国和伊朗(的行为与其他国家相比如何。

我尝试了这段代码,但它只是给了我一个我独特的二元对的列表:

table(final$Dyadpair) 
names(sort(-table(final$Dyadpair)))

你提到使用聚合dplyr——但我看不出这些如何让我为我所有独特的二元组描述统计数据?你介意详细阐述一下吗?

代码是否可以返回如下内容:对于 2360-2005 年间的 Dyad 2013,80% 是 NA,10% 是网络攻击,10% 是 MID 攻击等?


更新以澄清:

好的,是的 - 上面的例子只是假设。基于我提供的九行数据 - 这是我希望R在描述性统计方面可以提供的数据。

二元:2360 无攻击: 22.22% (2/9( ....在2005年和2006

网络攻击:77.78%(7/9(....在2007-2013年

MID攻击:11.11%(1/9(....在2009年

网络和中东:11.11%(1/9(....在2009年

从本质上讲,在给定的时间范围内(我上面给出的例子是2005-2013

(,其中有多少年导致NO攻击,其中有多少年导致网络攻击,其中有多少年导致MID攻击,以及其中有多少年导致网络和MID攻击。我不知道我的数据的设置方式是否可能做到这一点 ->因为我每年汇总网络攻击和MID攻击?是的,我还想考虑攻击的严重性(网络攻击和 MID 攻击(,但我不知道该怎么做。

这是否有助于澄清我正在寻找什么?

这是一个dplyr的方法,我对你想要什么有最好的猜测。它将输出一个数据框,每个二元组一行,每个二元组具有相同的汇总统计数据。

library(dplyr)
your_data %>%
group_by(Dyad) %>%
summarize(
year_range = paste(min(year), max(year), sep = "-"),
no_attacks = mean(is.na(cyberattack) & (is.na(MID) | MID == 0)),
cyber_attacks = mean(!is.na(cyberattack)),
MID_attacks = mean(!is.na(MID) & MID > 0),
cyber_and_MID = mean(!is.na(cyberattack) & (!is.na(MID) & MID > 0)),
cyber_sev_weighted = weighted.mean(cyberattack, w = cybersev, na.rm = TRUE)
)
# # A tibble: 1 x 7
#    Dyad year_range no_attacks cyber_attacks MID_attacks cyber_and_MID cyber_sev_weighted
#   <int> <chr>           <dbl>         <dbl>       <dbl>         <dbl>              <dbl>
# 1  2360 2005-2013       0.222         0.778       0.111         0.111               1.86

使用此数据:

your_data = read.table(text = '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', header = T)

最新更新