r - 通过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
我有一种方法可以将两列合并在一起,但是为它们如何在新列中组合制定一个规则,这对我的情况是否合适?
感谢您的帮助。
解决方案
你可以试试这个:
#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
推荐阅读
- blazor - Blazor 应用程序,如何添加模型状态验证错误?
- java - 有没有 ESAPI 的替代品
- laravel - 从 Laravel 5.8 升级到 6.2 后 ConfirmPasswordController 不存在
- javascript - 绝对初学者,Visual Studio 终端
- apache-spark - 我们什么时候应该在 Apache Spark 中使用 createTempView?
- ruby-on-rails - 如何在 Rails 中显示列的总和
- angular - 角材料表中的增量列
- reactjs - 一种了解 React App 构建版本的方法
- javascript - 在 Switch 语句中使用 indexOf()
- c++ - 读取逗号分隔的 .txt 文件并放入数组