我在一个由因子组成的数据框中有两个向量(每个向量大约有 10000 个唯一因子)。
以下是我的数据的简化示例:
tg<-data.frame(A=sample(letters[1:5],30,replace=TRUE),
B=sample(letters[1:5],30,replace=TRUE))
A B
1 b b
2 a b
3 e e
4 c b
5 e e
6 a b
7 d a
8 d a
9 d b
10 a e
11 a e
. . .
我想组合(按行)两列中的元素并创建一个新 ID。
一种方法是将两列简单地粘贴在一起:
paste0(tg$A,tg$B)
[1] "bb" "ab" "ee" "cb" "ee" "ab" "da" "da" "db" "ae"
"ae" "bc" "ae" "bb" "ec" "ba" "dd" "de" "cd" "eb" "cd"
"db" "dc" "ab" "ae" "cc" "dc" "ce" "eb" "ea"
但是我想创建将“ab”和“ba”视为相同的新ID,我该怎么做?
编辑:很抱歉标题令人困惑,我找不到更好的方法来解释问题(因此无法找到任何解决方案 - 如果这里已经有解决方案的话)。 p>
最佳答案
对 ID 中的字母进行排序即可解决该问题(以下 this question ):
strSort <- function(x)
sapply(lapply(strsplit(x, NULL), sort), paste, collapse="")
unique(sapply(new_ids, strSort))
[1] "be" "bd" "bc" "ae" "aa" "ab" "ad" "cd" "ac" "dd" "ee" "ce" "cc" "de"
关于r - 从两个向量创建新的 ID(双向),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21984830/