【发布时间】:2015-07-23 11:22:46
【问题描述】:
我想在下面的简单示例中为列 n1 和 n2 中的每对唯一值添加一个唯一 ID:
示例数据:
>dput(df)
structure(list(n1 = c(5L, 7L, 3L, 9L, 2L, 2L, 4L), y1 = c(1L,
1L, 2L, 1L, 1L, 1L, 3L), n2 = c(7L, 5L, 4L, 2L, 4L, 4L, 2L),
y2 = c(1L, 3L, 1L, 2L, 2L, 3L, 2L)), .Names = c("n1", "y1",
"n2", "y2"), class = "data.frame", row.names = c(NA, -7L))
>head(df)
n1 y1 n2 y2
1 5 1 7 1
2 7 1 5 3
3 3 2 4 1
4 9 1 2 2
5 2 1 4 2
6 2 1 4 3
使用下面的代码,我可以根据 n1 列中相对于 n2 列的值组合添加一个唯一的对 id,但这不考虑 n1 和 n2 中的两个值具有相同组合但在两列中按顺序颠倒。例如,在下面的示例中,最后三行中的对组合是相同的,但是由于在最后一行中值的顺序颠倒了,因此该函数假定它们是不同的对组合)。
> dfn = transform(df, pairid = as.numeric(interaction(n1, n2, drop=TRUE)))
> dfn
n1 y1 n2 y2 pairid
1 5 1 7 1 6
2 7 1 5 3 5
3 3 2 4 1 4
4 9 1 2 2 2
5 2 1 4 2 3
6 2 1 4 3 3
7 4 3 2 2 1
我想要的输出如下。
n1 y1 n2 y2 pairid
1 5 1 7 1 4
2 7 1 5 3 4
3 3 2 4 1 3
4 9 1 2 2 2
5 2 1 4 2 1
6 2 1 4 3 1
7 4 3 2 2 1
【问题讨论】: