在 r 中重新编码一个既是字母又是数字的变量
Recoding a variable that is both letters and numbers in r
我有一个用字母和数字编码的变量,我想把它全部变成数字。字母是 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] 需要比字母大。这些字母需要与其在字母表中的位置相对应。
我们可以使用
library(dplyr)
v1 <- setNames(as.character(27:33), 2:8)[var]
v2 <- setNames(as.character(1:26), LETTERS)[var]
as.vector(coalesce(v1, v2))
match(var, c(LETTERS, 2:8))
看起来它也给出了您正在寻找的答案。
我有一个用字母和数字编码的变量,我想把它全部变成数字。字母是 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] 需要比字母大。这些字母需要与其在字母表中的位置相对应。
我们可以使用
library(dplyr)
v1 <- setNames(as.character(27:33), 2:8)[var]
v2 <- setNames(as.character(1:26), LETTERS)[var]
as.vector(coalesce(v1, v2))
match(var, c(LETTERS, 2:8))
看起来它也给出了您正在寻找的答案。