示例:
a b p.a p.b
1 2 x y
3 4 c d
2 1 y x
5 6 f e
1 1 x x
我想加入p.a
和p.b
(a
和b
的属性),以便在出现一对a
和{{{ 1}}所有b
和b
对应转为a
和a
对,并且应保留属性的顺序,然后将其合并为新栏目。因此,只有当前两列发生变化时,最后两列才会发生变化。我知道我可以使用b
加入两列,但我不确定如何正确获取列条目的顺序。
结果应如下:
paste
a b p.a p.b joined
1 2 x y xy
3 4 c d cd
1 2 x y xy
5 6 f e fe
1 1 x x xx
和a
的行是b
还是1 2
并不重要,但如果有2 1
则不应该{ {1}},反之亦然
答案 0 :(得分:1)
使用更新的数据集,我们可以循环遍历行,根据前两个列元素获取order
,并根据该列获取order
列。
df2 <- do.call(rbind, lapply(seq_len(nrow(df1)), function(i) {
x1 <- df1[i,]
i1 <- order(unlist(x1[1:2]))
x1[1:2] <- unlist(x1[1:2])[i1]
x1[3:4] <- unlist(x1[3:4])[i1]
x1}))
df2$joined <- do.call(paste0, df2[3:4])
df2
# a b p.a p.b joined
#1 1 2 x y xy
#2 3 4 c d cd
#3 1 2 x y xy
#4 5 6 f e fe
#5 1 1 x x xx