r - 忽略方向的成对唯一组合

标签 r dataframe

我想根据 R 中的一个常见字符在 data.frame 中聚合某个值。 问题是我对成对组合的不同方向不感兴趣。 比如

d = data.frame( x = LETTERS[1:5], y = LETTERS[5:1] )

  x y
1 A E
2 B D
3 C C
4 D B
5 E A

然后将像这样计算组合:

d$z <- paste0(d$x,d$y,sep="_")

问题是我对成对差异不感兴趣。所以 A_E 应该与这个简单示例中的 E_A 相同。

是否有一个聪明的简短解决方案来粘贴它们?我目前正在考虑在将它们组合成一个向量之前对每个进行排序。

最佳答案

一种选择是使用 pminpmax:

transform(d, z = paste(pmin(x,y), pmax(x,y), sep="_"))
#  x y   z
#1 A E A_E
#2 B D B_D
#3 C C C_C
#4 D B B_D
#5 E A A_E

请注意,如果 x 和 y 是 factor,则可能需要将它们转换为 character


d <- data.frame( x = LETTERS[1:5], y = LETTERS[5:1], stringsAsFactors = FALSE)

关于r - 忽略方向的成对唯一组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37388766/

相关文章:

r - 将 Rintrojs 与 Shinydashboard 结合使用

r - 散点图的非参数分位数回归曲线

python - BoxPlot:如何显示年度值而不是季度值?

python - 如何在 pandas 中保留不同日期的重复值

python - 按日期时间 Pandas 数据框索引失败

r - 在 pdf 中组合矢量和位图图形

r - 如何从函数调用中提取公式和子集信息

python - 如何将此列表转换为数据框?

pandas - 转置数据框后的列名称

r - left_join 表示列不存在,即使它存在