首页 > 解决方案 > 通过R中的规则合并两列

问题描述

我知道严格的编程问题在这个平台上是不可能的,但我想知道你们中是否有人对我想做的事情有答案。我对 R 或编码完全陌生。

这是我的数据示例:

 X1  year individual partner 
  <dbl> <dbl> <chr> <chr>      
1     1  2015  A     B             
2     2  2015  A     B             
3     3  2015  B     A             
4     4  2015  C     A              
5     5  2015  C     D             
6     6  2015  D     C              

我想创建一个新列,它会给我 dyad 的 id。二元组将是个人和合作伙伴的独特组合。我可以将列合并在一起,但在这种情况下,A_B 和 B_A 将是两个不同的对,但是这两个实际上是同一个对。

我想要实现的一个例子:

  X1  year individual partner dyad 
  <dbl> <dbl> <chr> <chr> <chr>
1     1  2015  A     B     A_B
2     2  2015  A     B     A_B
3     3  2015  B     A     A_B
4     4  2015  C     A     C_A
5     5  2015  C     D     C_D
6     6  2015  D     C     C_D

我有一种方法可以将两列合并在一起,但是为它们如何在新列中组合制定一个规则,这对我的情况是否合适?

感谢您的帮助。

标签: r

解决方案


你可以试试这个:

#Data
df <- structure(list(X1 = 1:6, year = c(2015L, 2015L, 2015L, 2015L, 
2015L, 2015L), individual = c("A", "A", "B", "C", "C", "D"), 
    partner = c("B", "B", "A", "A", "D", "C")), row.names = c("1", 
"2", "3", "4", "5", "6"), class = "data.frame")

#Create index
df$id <- apply(df[,c(3:4)],1,function(x)paste(sort(x),collapse = "_"))

  X1 year individual partner  id
1  1 2015          A       B A_B
2  2 2015          A       B A_B
3  3 2015          B       A A_B
4  4 2015          C       A A_C
5  5 2015          C       D C_D
6  6 2015          D       C C_D

推荐阅读