【问题标题】:Creating new IDs (two-way) from two vectors从两个向量创建新 ID(双向)
【发布时间】:2014-02-24 10:20:04
【问题描述】:

我在一个由因子组成的数据框中有两个向量(每个向量约 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"

但是我想做一个新的ID,把“ab”和“ba”看成是一样的,我该怎么做呢?

编辑:抱歉标题令人困惑,我找不到更好的方法来解释这个问题(因此找不到任何解决方案 - 如果这里已经有的话)。 p>

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    对您 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多