簡體   English   中英

在 R 中將字母映射到數字

[英]Mapping Letters to Numbers in R

我有一個由n字母組成的字符串向量,例如"ABCDEF"

我需要將它映射到某個唯一的數字。 當然,直觀的做法是提取所有單個字母的letter ,然后通過

match(letter,LETTERS)

但這會導致大n數字太大,因為每個字母(從0126 )我都需要 2 位數字。

我現在的想法是將字符串的每個組合126^n之間的唯一數字匹配,利用26^n對於大n數字少於2n的事實。

例如對於n=4我們得到"AAAA" -> 1"ZZZZ" -> 26^4

我怎樣才能在 R 中做到這一點?

我猜你想對下面的字母進行編碼

f <- function(letter) sum((match(unlist(strsplit(letter,"")),LETTERS)-1)*26**((nchar(letter)-1):0))+1

以至於

> f("AAAA")
[1] 1

> f("AABC")
[1] 29

> f("ZZZZ")
[1] 456976

雖然這可能很聰明,但使用因子可能更簡單,更容易理解。 您還可以保持字符串格式接近手,同時將其編碼為整數節省空間。

如果您需要數據庫中的整數(這將更好地連接它們),那么您可以使用as.integer(factor_column)將因子轉換為 int 並且您也將擁有整數變體。

您將失去的是映射的確定性,如果這不僅僅是一次性數據加載,這對您在數據庫世界中可能很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM