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