【问题标题】:Recoding a variable that is both letters and numbers in r在 r 中重新编码一个既是字母又是数字的变量
【发布时间】:2018-05-31 14:28:33
【问题描述】:

我有一个用字母和数字编码的变量,我试图将它全部转换为数字。字母是 A 到 Z,我希望它们编码为 1 到 26。数字条目是 2 到 8,我希望它们编码为 27 到 33。我似乎找不到这样做的好方法.

例如,我的变量看起来类似于:

var = c('A',2,3,8,'C','W',6,'T')

我想要 A = 1、2 = 27、3 = 28、8 = 33、C = 3、W = 23、6 = 31 和 T = 20。

var 基本上是 A:Z 和 2:8。但是数字 [2:8] 需要比字母大。这些字母需要与它们在字母表中的位置相对应。

【问题讨论】:

  • 请展示一个可重复的小例子和预期的输出,因为不清楚变量是如何编码的
  • @akrun 我添加了一些信息。希望这会有所帮助。
  • 试试match(var, c(LETTERS, 2:8))

标签: r character numeric recode


【解决方案1】:

match(var, c(LETTERS, 2:8)) 看起来也给出了您正在寻找的答案。

【讨论】:

    【解决方案2】:

    我们可以这样做

    library(dplyr)
    v1 <- setNames(as.character(27:33), 2:8)[var]
    v2 <- setNames(as.character(1:26), LETTERS)[var]
    
    as.vector(coalesce(v1, v2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2015-03-31
      • 2012-02-10
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      相关资源
      最近更新 更多