在R中使用interaction()
函数时,13和31被视为不同的交互。我想认为它们是一样的。
factor1 <- c(rep(1,3), rep(2,3), rep(3,3))
factor2 <- c(rep(c(1,2,3), 3))
combined <- interaction(factor1, factor2, sep = "")
组合现在看起来像这样:
> combined
[1] 11 12 13 21 22 23 31 32 33
Levels: 11 21 31 12 22 32 13 23 33
但我希望它看起来像这样:
> combined
[1] 11 12 13 12 22 23 13 23 33
Levels: 11 12 13 22 23 33
有优雅的方法吗?
答案 0 :(得分:2)
先排序;然后降低水平:
f1 = pmin(factor1, factor2)
f2 = pmax(factor1, factor2)
droplevels(interaction(f1, f2, sep=""))
# [1] 11 12 13 12 22 23 13 23 33
# Levels: 11 12 22 13 23 33
如果您对字符串结果没问题,paste0(f1,f2)
会更简单。