加入并订购列

时间:2016-09-04 17:14:18

标签: r dataframe

示例:

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.ap.bab的属性),以便在出现一对a和{{{ 1}}所有bb对应转为aa对,并且应保留属性的顺序,然后将其合并为新栏目。因此,只有当前两列发生变化时,最后两列才会发生变化。我知道我可以使用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}},反之亦然

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