从R中的事件参与者级数据创建二元组事件年数据

时间:2014-03-21 00:37:14

标签: r data-manipulation

所有

我正在尝试使用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变量捕获事件中任何参与者获得的最高值。 highestactionlowestaction变量分别包含二元组中一个参与者的最高和最低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

0 个答案:

没有答案