【问题标题】:How can I convert a list of character strings to unique single characters?如何将字符串列表转换为唯一的单个字符?
【发布时间】:2020-05-11 02:28:34
【问题描述】:

我有一个变量,它是按顺序排列的不同鸟叫声的列表。我想给每个不同的电话一个独特的、单一的角色。我找到了一种方法来给他们唯一的数字,但是一旦我达到 10 就不好了,因为我需要把这个列表变成一串字母和/或数字。

例如,我的一些数据框如下所示:

> d1
  Order        Type
1     1 Bowerbird a
2     2     Catbird
3     3       Robin
4     4   Scrubwren
5     5 Bowerbird b
6     6  Kookaburra
7     7     Catbird
8     8     Rosella

我想将每个独特的调用转换为不同的字符。它可以是小写字母、大写字母或数字,只要它们都是单个数字即可。例如:

> d1
  Order        Type Unique
1     1 Bowerbird a      a
2     2     Catbird      b
3     3       Robin      c
4     4   Scrubwren      1
5     5 Bowerbird b      2
6     6  Kookaburra      A
7     7     Catbird      b
8     8     Rosella      B

这个调用序列可以写成“abc12AbB”。

我有大约 40 种不同的可能调用,所以如果可以避免的话,我不想使用 ifelse 函数来执行此操作。有没有办法将每个字符串转换为唯一的字符?

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以使用数字 0-9 的大小写字母,大小为 62。

    set.seed(123)
    df$unique <- sample(c(letters, LETTERS, 0:9))[factor(df$Type)]
    
    df
    #  Order       Type unique
    #1     1 Bowerbirda      E
    #2     2    Catbird      Y
    #3     3      Robin      c
    #4     4  Scrubwren      X
    #5     5 Bowerbirdb      o
    #6     6 Kookaburra      n
    #7     7    Catbird      Y
    #8     8    Rosella      P
    

    你在这里并不需要sample,而是添加它来引入随机性。

    你可以把调用序列写成

    paste0(df$unique, collapse = "")
    #[1] "EYcXonYP"
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 2016-07-05
      • 2018-05-29
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 2012-10-23
      相关资源
      最近更新 更多