首页 > 解决方案 > 将数字替换为r中数据框中的字母

问题描述

所以基本上我在数据框中有一列,例如:

df <- data.frame(well = c("0","1",NA,"1","1","2","2","3","4","3"))

我只想通过将“0”替换为“A”、“1”替换为“B”、...、“7”替换为“H”来创建一个新列。我试过这个没有成功:

lxn <-  data.frame(old_name = c(0,1,2,3,4,5,6,7), 
               new_name = c("A","B","C","D","E","F","G","H"))
map <- lxn$new_name
names(map) <- lxn$old_name
df <- df %>% mutate(well_l = ifelse(well %in% names(map), 
                     map[well], 
                     well)) 

如果您尝试一下,您可以看到输出基本上是井号 + 1。我不知道为什么我没有检索字母 (new_name) 并获取井号 + 1。

希望可以有人帮帮我。

标签: rif-statement

解决方案


您可以使用内置的常量LETTERS

df <- transform(df, let=LETTERS[well])
df
#    well  let
# 1     0    A
# 2     1    B
# 3  <NA> <NA>
# 4     1    B
# 5     1    B
# 6     2    C
# 7     2    C
# 8     3    D
# 9     4    E
# 10    3    D

推荐阅读