所有
我正在尝试使用R从事件参与者级数据创建dyad事件年数据,并考虑就如何处理此问题寻求建议。我正在使用的参与者级数据集相当大且有点复杂(n> 6,000),因此我将提供下面我想要做的事情的说明。
我的数据看起来像这样。
casenum unit_id start end initiatingside losses action joiner
2 200 1952 1953 0 0 0 0
2 2 1952 1953 1 0 7 0
5 345 1953 1953 0 0 0 0
5 300 1953 1953 1 0 8 0
7 339 1956 1956 1 0 16 0
7 200 1956 1956 0 0 7 0
9 200 1960 1961 1 2 17 0
9 740 1960 1961 0 1 17 0
15 365 1958 1959 0 0 7 0
15 210 1958 1959 0 0 7 0
15 200 1958 1959 0 0 7 0
15 225 1958 1959 0 1 10 0
15 255 1958 1959 1 0 16 0
15 310 1958 1959 0 0 16 1
18 700 1963 1965 0 2 17 0
18 200 1963 1965 1 0 17 0
18 42 1964 1964 1 0 7 1
假设我有六个具有以下案例编号的事件:2,5,7,9,15和18.每个事件都将一侧与另一侧相对。前四个病例是双侧的(分别为2对200,300对345,200对339和200对740)。最后两个是多边活动,其中一个参与者是一个木匠。案例编号尽管310不是原始参与者,但是有15个坑255与200,210,225,310和365。案例编号尽管unit_id = 42
不是原始参与者,但仍有18个坑42和200与700相比。
参与者级别的每次观察还包括采取的行动和按顺序发生的损失。 initiatingside
变量编码参与者是否在发起事件的一方。
我想要的是一个dyad事件年数据框,看起来像这样。
casenum pairid year losses highestaction lowestaction joiner
2 1002200 1952 0 7 0 0
2 1002200 1953 0 7 0 0
5 1300345 1953 0 8 0 0
7 1200339 1956 0 16 7 0
9 1200740 1960 2 17 17 0
9 1200740 1961 2 17 17 0
15 1200255 1958 0 16 7 0
15 1200255 1959 0 16 7 0
15 1210255 1958 0 16 7 0
15 1210255 1959 0 16 7 0
15 1225255 1958 1 16 10 0
15 1225255 1959 1 16 10 0
15 1255310 1958 0 16 16 1
15 1255310 1959 0 16 16 1
15 1255365 1958 0 16 7 0
15 1255365 1959 0 16 7 0
18 1042700 1964 2 17 7 1
18 1200700 1963 2 17 17 0
18 1200700 1964 2 17 17 0
18 1200700 1965 2 17 17 0
pairid
变量是参与者unit_id
与事件另一侧参与者unit_id
的串联。 unit_id
只有一个或两个数字有前导零,前导1给它一个七位数的唯一pairid
(使用paste0
函数应该很容易)。较低的unit_id
在串联过程中排在第一位,出于我的目的,这一点非常重要。 year
变量捕获事件年。
losses
变量捕获事件中任何参与者获得的最高值。 highestaction
和lowestaction
变量分别包含二元组中一个参与者的最高和最低action
分数。因此,它们可以被视为事件级信息。 joiner
变量捕获事件中的一个或两个参与者是否不是原始参与者。
非常感谢任何帮助。示例代码如下。
casenum <- c(2,2,5,5,7,7,9,9,15,15,15,15,15,15,18,18,18)
unit_id <- c(200,2,345,300,339,200,200,740,365,210,200,225,255,310,700,200,42)
start <- c(1952,1952,1953,1953,1956,1956,1960,1960,1958,1958,1958,1958,1958,1958,1963,1963,1964)
end <- c(1953,1953,1953,1953,1956,1956,1961,1961,1959,1959,1959,1959,1959,1959,1965,1965,1964)
initiatingside <- c(0,1,0,1,1,0,1,0,0,0,0,0,1,0,0,1,1)
losses <- c(0,0,0,0,0,0,2,1,0,0,0,1,0,0,2,0,0)
action <- c(0,7,0,8,16,7,17,17,7,7,7,10,16,16,17,17,7)
joiner <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1)
Data=data.frame(casenum=casenum,unit_id=unit_id,start=start,end=end,initiatingside=initiatingside,losses=losses,action=action,joiner=joiner)
Data